To transfer files to Compute Engine virtual machine (VM) instances, different
options are available depending on your workstation OS and the target instance
OS.
Cloud Storage buckets can be used as a transfer
point between you and your VMs. You can use a web browser, the Google Cloud CLI, or a
programming language to transfer files between Cloud Storage and Compute Engine VMs.
Different credential types can be used for the upload and download step to best suit your needs:
Log in to the destination device and download the
files from the bucket completing the file transfer.
Optional: Delete files that you no longer need to
prevent any unwanted storage charges.
If you need to transfer files in the other direction, you can reverse the process. Ensure that the
account uploading the file has write access to the bucket.
Transfer files using the Google Cloud CLI
Google Cloud CLI provides a Secure Copy Protocol (SCP) file transfer utility over an established
SSH connection.
To transfer files using SCP, do the following:
Enable SSH on your Windows VM if it's not
already enabled.
LOCAL_FILE_PATH: the path to the file on your machine
VM_NAME: the name of your VM
REMOTE_DIR: a directory on the remote machine
You can also copy files and directories in reverse from the remote machine. The
following example recursively copies a directory from the source to the destination:
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-26 UTC."],[[["\u003cp\u003eCloud Storage, the Google Cloud CLI, and the Windows RDP client are the main methods for transferring files to Compute Engine Windows VM instances, with the availability depending on the workstation's OS.\u003c/p\u003e\n"],["\u003cp\u003eCloud Storage can serve as an intermediary for file transfers between your computer and a VM, and it requires setting up a bucket with the correct IAM permissions for uploading and downloading files.\u003c/p\u003e\n"],["\u003cp\u003eThe Google Cloud CLI facilitates file transfers via SCP over an SSH connection, allowing you to copy files to and from your VM using \u003ccode\u003egcloud compute scp\u003c/code\u003e command, and is only supported for VMs running Windows Server 2019 or later.\u003c/p\u003e\n"],["\u003cp\u003eThe Windows RDP client supports mounting local storage to a remote Windows VM for file transfer, through the Remote Desktop Connection app, macOS RDP client or the Android app, and steps vary slightly depending on the client.\u003c/p\u003e\n"]]],[],null,["# Transfer files to Windows VMs\n\nWindows\n\n*** ** * ** ***\n\nTo transfer files to Compute Engine virtual machine (VM) instances, different\noptions are available depending on your workstation OS and the target instance\nOS.\n\nTransferring files through Cloud Storage\n----------------------------------------\n\n\n[Cloud Storage](/storage) buckets can be used as a transfer\npoint between you and your VMs. You can use a web browser, the Google Cloud CLI, or a\nprogramming language to transfer files between Cloud Storage and Compute Engine VMs.\n\n\nDifferent credential types can be used for the upload and download step to best suit your needs:\n\n- [Accessing data on a user's behalf](/storage/docs/user-accounts) is best for single use operations, or resources that you are primarily responsible for.\n- Consider [service account credentials](/compute/docs/access/create-enable-service-accounts-for-instances#using) for scaled deployments and shared resource scenarios.\n\n\u003cbr /\u003e\n\n\nTo use Cloud Storage to transfer files between a computer and a VM, do the following:\n\n1. [Create a Cloud Storage bucket](/storage/docs/creating-buckets) if you don't have an existing bucket to use for file transfers.\n2. [Use IAM permissions](/storage/docs/access-control/using-iam-permissions) to modify the access to the bucket:\n - Accounts uploading file(s) to the bucket should have the **Storage Object Admin** granted.\n - Accounts downloading file(s) should have the **Storage Object Viewer** role granted.\n3. Log in to the source device and [upload the files](/storage/docs/uploading-objects) to the bucket.\n4. Log in to the destination device and [download the\n files](/storage/docs/downloading-objects) from the bucket completing the file transfer.\n5. Optional: [Delete files](/storage/docs/deleting-objects) that you no longer need to prevent any unwanted storage charges.\n\n\u003cbr /\u003e\n\n\nIf you need to transfer files in the other direction, you can reverse the process. Ensure that the\naccount uploading the file has write access to the bucket.\n\nTransfer files using the Google Cloud CLI\n-----------------------------------------\n\n\n| **Note:** Transferring files using the Google Cloud CLI is only supported on VMs running Windows Server 2019 and later.\n\n\u003cbr /\u003e\n\n\nGoogle Cloud CLI provides a Secure Copy Protocol (SCP) file transfer utility over an established\nSSH connection.\n\n\nTo transfer files using SCP, do the following:\n\n1. [Enable SSH](/compute/docs/connect/windows-ssh) on your Windows VM if it's not already enabled.\n2. [Review your firewall rules](/vpc/docs/using-firewalls#listing-firewall-rules-vpc) and confirm that SSH connections in on port `22` are permitted; if not [create a SSH firewall rule](/vpc/docs/using-firewalls#common-use-cases-allow-ssh).\n3. Ensure [gcloud CLI is installed](/sdk/docs/install) on the source device containing the files to be transferred.\n4. Use the [gcloud compute scp](/sdk/gcloud/reference/compute/scp) command to transfer the files to the destination machine.\n\n\u003cbr /\u003e\n\nThe following example copies a file from your workstation to the home directory of the VM: \n\n```\ngcloud compute scp LOCAL_FILE_PATH VM_NAME:REMOTE_DIR\n```\n\nReplace the following:\n\n- \u003cvar translate=\"no\"\u003eLOCAL_FILE_PATH\u003c/var\u003e: the path to the file on your machine\n- \u003cvar translate=\"no\"\u003eVM_NAME\u003c/var\u003e: the name of your VM\n- \u003cvar translate=\"no\"\u003eREMOTE_DIR\u003c/var\u003e: a directory on the remote machine\n\nYou can also copy files and directories in reverse from the remote machine. The\nfollowing example recursively copies a directory from the source to the destination: \n\n```\ngcloud compute scp --recurse VM_NAME:REMOTE_DIR LOCAL_FILE_PATH\n```\n\nFor more information, see the\n[`gcloud compute scp` reference documentation](/sdk/gcloud/reference/compute/scp).\n\nTransferring files through the Windows RDP client\n-------------------------------------------------\n\nMany first party [Microsoft RDP Clients](https://docs.microsoft.com/windows-server/remote/remote-desktop-services/clients/remote-desktop-clients)\nsupport connecting local storage to a remote Windows VM; however\nthis is not supported on all clients.\n\nFollow the instructions for the operating system of the device you're\ntransferring files to or from: \n\n### Windows\n\nTransfer files through the built-in Remote Desktop Connection app\n(`%systemroot%/system32/mstsc.exe`) by doing the following:\n\n1. Open the **Remote Desktop Connection** application.\n2. Expand **Show Options**.\n3. Click the **Local Resources** tab.\n4. Under **Local devices and resources** , click **More**.\n5. Select the **Drives** checkbox, or pick your chosen drive.\n6. Connect and login to the VM as you would normally.\n7. Open **File Explorer** on the remote machine and see your drive mounted.\n8. Use this drive for file transfers while you are connected.\n\n### macOS\n\nTransfer files through the [Remote Desktop Microsoft RDP Client for macOS](https://apps.apple.com/app/microsoft-remote-desktop/id1295203466)\nby doing the following:\n\n1. Click the **+** icon in the top left.\n2. Select **Add PC**.\n3. Under the **Folders** tab, enable **Redirect folders**.\n4. Press **+** icon in the bottom left.\n5. Choose a folder that you would like redirected.\n6. Connect and login to the VM as you would normally.\n7. Open **File Explorer** on the remote machine and see your folder mounted.\n8. Use this drive for file transfers while you are connected.\n\n### Android\n\nTransfer files through the [Remote Desktop](https://play.google.com/store/apps/details?id=com.microsoft.rdc.androidx)\napp from Microsoft.\n\n1. Press the **+** icon in the top right.\n2. Select **Add PC**.\n3. Under **Device \\& Audio Redirection** , enable **Storage**.\n4. Connect and login to the VM as you would normally.\n5. Open **File Explorer** on the remote machine and see your storage mounted.\n6. Use this drive for file transfers while you are connected.\n\nWhat's next\n-----------\n\n- [Connect to your VMs](/compute/docs/instances/connecting-to-windows) to use the files that you transferred."]]