Bird
Raised Fist0
GCPcloud~20 mins

Storage commands (gsutil) in GCP - Practice Problems & Coding Challenges

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Challenge - 5 Problems
🎖️
gsutil Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
service_behavior
intermediate
2:00remaining
Understanding gsutil cp behavior with directories

You run the command gsutil cp -r ./localdir gs://my-bucket/backup/. What will be the result in the bucket?

AOnly the files in the root of <code>localdir</code> will be copied, subfolders will be ignored.
BAll files inside <code>localdir</code> will be copied directly into <code>backup/</code> without creating a <code>localdir</code> folder.
CA new folder named <code>localdir</code> will be created inside <code>backup/</code> with all files copied inside it.
DThe command will fail because <code>gsutil cp</code> does not support recursive copying.
Attempts:
2 left
💡 Hint

Think about how gsutil cp -r handles directory structures when copying.

Configuration
intermediate
2:00remaining
Setting ACLs with gsutil

You want to make all objects in gs://my-bucket/data/ publicly readable using gsutil. Which command achieves this?

Agsutil acl set public-read gs://my-bucket/data/**
Bgsutil iam ch allUsers:objectViewer gs://my-bucket/data
Cgsutil set-acl public-read gs://my-bucket/data
Dgsutil acl ch -u AllUsers:R gs://my-bucket/data/**
Attempts:
2 left
💡 Hint

Consider the difference between ACLs and IAM policies in gsutil.

Architecture
advanced
2:00remaining
Optimizing gsutil for large data transfers

You need to upload 10 TB of data to a bucket quickly. Which gsutil option helps maximize upload speed?

AUse <code>gsutil cp -m</code> to enable multi-threaded uploads.
BUse <code>gsutil cp --quiet</code> to reduce output and speed up uploads.
CUse <code>gsutil rsync</code> without any flags for faster transfer.
DUse <code>gsutil cp -r</code> to recursively upload files in parallel.
Attempts:
2 left
💡 Hint

Think about how gsutil can upload multiple files at once.

security
advanced
2:00remaining
Preventing accidental deletion with gsutil

You want to prevent accidental deletion of objects in your bucket using gsutil. Which feature should you enable?

AEnable Object Versioning on the bucket.
BUse <code>gsutil rm -n</code> to simulate deletions.
CSet bucket IAM policy to deny delete permissions.
DUse <code>gsutil cp -n</code> to prevent overwriting.
Attempts:
2 left
💡 Hint

Think about how to recover deleted objects.

Best Practice
expert
3:00remaining
Efficiently syncing local and cloud storage with gsutil

You want to keep a local directory and a bucket folder in sync, copying only changed files and deleting removed files in the bucket. Which gsutil command and flags achieve this?

Agsutil cp -m -r ./localdir gs://my-bucket/folder
Bgsutil rsync -d -r ./localdir gs://my-bucket/folder
Cgsutil rsync -r ./localdir gs://my-bucket/folder
Dgsutil cp -n -r ./localdir gs://my-bucket/folder
Attempts:
2 left
💡 Hint

Consider how to delete files in the destination that no longer exist in the source.

Practice

(1/5)
1. What does the gsutil ls gs://my-bucket command do?
easy
A. Lists all files and folders inside the bucket named 'my-bucket'.
B. Deletes the bucket named 'my-bucket'.
C. Creates a new bucket named 'my-bucket'.
D. Copies files from 'my-bucket' to your local machine.

Solution

  1. Step 1: Understand the 'ls' command in gsutil

    The 'ls' command lists contents of a bucket or folder in Google Cloud Storage.
  2. Step 2: Apply the command to the bucket 'my-bucket'

    Running gsutil ls gs://my-bucket shows all files and folders inside that bucket.
  3. Final Answer:

    Lists all files and folders inside the bucket named 'my-bucket'. -> Option A
  4. Quick Check:

    gsutil ls lists bucket contents = C [OK]
Hint: Remember: 'ls' means list contents of bucket or folder [OK]
Common Mistakes:
  • Confusing 'ls' with 'rm' which deletes files
  • Thinking 'ls' creates buckets
  • Assuming 'ls' copies files
2. Which of the following is the correct syntax to copy a local file named photo.jpg to a bucket gs://images-bucket using gsutil?
easy
A. gsutil copy photo.jpg gs://images-bucket
B. gsutil cp gs://images-bucket photo.jpg
C. gsutil cp photo.jpg gs://images-bucket
D. gsutil upload photo.jpg gs://images-bucket

Solution

  1. Step 1: Identify the correct gsutil command for copying

    The command to copy files is gsutil cp, followed by source then destination.
  2. Step 2: Place source and destination correctly

    Local file is source (photo.jpg), bucket is destination (gs://images-bucket), so syntax is gsutil cp photo.jpg gs://images-bucket.
  3. Final Answer:

    gsutil cp photo.jpg gs://images-bucket -> Option C
  4. Quick Check:

    cp source destination = A [OK]
Hint: Copy command is 'cp' with source first, then destination [OK]
Common Mistakes:
  • Swapping source and destination order
  • Using 'copy' instead of 'cp'
  • Using 'upload' which is not a gsutil command
3. What will be the output of the command gsutil ls gs://my-bucket/folder/ if the folder contains files file1.txt and file2.txt?
medium
A. gs://my-bucket/folder/file1.txt\ngs://my-bucket/folder/file2.txt
B. file1.txt\nfile2.txt
C. gs://my-bucket/file1.txt\ngs://my-bucket/file2.txt
D. No output, command will fail

Solution

  1. Step 1: Understand gsutil ls output format

    The 'gsutil ls' command lists full paths of files including bucket and folder names.
  2. Step 2: Apply to files inside 'folder/'

    Files inside 'folder/' will be listed with full path prefix: gs://my-bucket/folder/file1.txt and gs://my-bucket/folder/file2.txt.
  3. Final Answer:

    gs://my-bucket/folder/file1.txt gs://my-bucket/folder/file2.txt -> Option A
  4. Quick Check:

    gsutil ls shows full gs:// paths = B [OK]
Hint: gsutil ls shows full gs:// path, not just file names [OK]
Common Mistakes:
  • Expecting only file names without bucket path
  • Confusing folder path with bucket root
  • Assuming command fails if folder exists
4. You run gsutil rm gs://my-bucket/data.csv but get an error saying the file does not exist. What is the most likely cause?
medium
A. You need to add '-r' flag to remove a single file.
B. You used 'rm' instead of 'delete' command.
C. The bucket 'my-bucket' does not exist.
D. The file 'data.csv' is not in the bucket 'my-bucket'.

Solution

  1. Step 1: Understand the error message about file not existing

    The error means the specified file path is not found in the bucket.
  2. Step 2: Check command and flags correctness

    'rm' is the correct command to remove files; '-r' is only for recursive folder deletion, not needed for single files.
  3. Final Answer:

    The file 'data.csv' is not in the bucket 'my-bucket'. -> Option D
  4. Quick Check:

    File missing causes error, not command or flags [OK]
Hint: Check file path exists before removing [OK]
Common Mistakes:
  • Thinking 'rm' is wrong command
  • Adding '-r' unnecessarily for single files
  • Assuming bucket missing causes file not found error
5. You want to delete an empty bucket named gs://temp-bucket. Which command should you use to safely remove it?
hard
A. gsutil cp gs://temp-bucket ./
B. gsutil rb gs://temp-bucket
C. gsutil delete gs://temp-bucket
D. gsutil rm gs://temp-bucket

Solution

  1. Step 1: Identify the command to remove buckets

    The command to remove a bucket is gsutil rb (remove bucket).
  2. Step 2: Confirm bucket is empty before removal

    Bucket must be empty to remove; if not, remove files first. Then run gsutil rb gs://temp-bucket.
  3. Final Answer:

    gsutil rb gs://temp-bucket -> Option B
  4. Quick Check:

    Remove bucket = rb command [OK]
Hint: Use 'rb' to remove empty buckets safely [OK]
Common Mistakes:
  • Using 'rm' which deletes files, not buckets
  • Using 'delete' which is not a gsutil command
  • Trying to copy bucket instead of removing