gsutil is a Python app developed by Google that lets you handle the GCP Cloud Storage service, anything from uploading, downloading, sync, mostly doing backup and migration operation. The other recommended CLI tool is gcloud storage. Let’s see how we could backup a Linux subdirectory to a GCP bucket while preserving the directory structure, using gsutil and gcloud storage.
- GCP account
- gsutil CLI
- gcloud CLI
gsutil -m cp -r -d /some/directory gs://some-bucket/
m: enables parallel (multithreaded) transfers. Faster uploads, in a way.
d: directory path.
If you wish to exclude certain file extensions, for instance
.jpg, run the following command:
gsutil -m cp -r -d -x "*.jpg" /some/directory gs://some-bucket/
But, if this doesn’t do it, alternately try using the
gsutil rsync command. For instance:
gsutil rsync -r /some/directory gs://some-bucket/
jpg file extensions:
gsutil -m rsync -r -x '^(?!.*\.jpg$).*' /some/directory gs://some-bucket/
I would prefer gcloud storage over gsutil any day. Overall, gcloud CLI provides a wider range of functionalities though, and it seems more simple and easier to use.
gcloud storage cp -r /some/directory gs://some-bucket
Note: There is no forward slash (
gs://some-bucket tho. Not adding a
/ makes a difference in terms of subdir replication.
If you get stuck at some step, feel free to leave a comment below and if you find this tutorial useful, follow our official channel on Telegram.