How Do I Transfer Data Into My Pod?

How Do I Transfer Data Into My Pod?

We've got a number of questions recently about how to transfer data into pods, and while do we have some transfer methods in our docs we'd like to go into a bit more detail on how to upload files into your pod.

In general, for large files, you'll want to ensure that they are hosted on the Internet before sending to your pod - simply because if you upload from your local computer you will be limited to whatever upload speed your local internet connection is capable of, and for home-based Internet this may not be fast enough to transfer multiple gigabyte files, especially on a regular basis. This may work fine for smaller files or as one-offs, but for routinely sending large models, for example, we would recommend uploading to Huggingface once so you can repeatedly pull files from there instead.

Without further ado, here's a rundown of the most popular methods.

runpodctl

runpodctl is our simple little official commandline utility that you can use to send files back and forth between the pod and your local computer, or to send files back and forth between pods. Instructions can be found for Windows, Linux, and macOS here, and a video tutorial can be found here.

To summarize, you use runpodctl with a send command in the terminal where the file is:

runpodctl send data.txt

It will give you a command and a passphrase to run where the file is to be sent:

Sending 'data.txt' (5 B)
Code is: 8338-galileo-collect-fidel
On the other computer run

runpodctl receive 8338-galileo-collect-fidel

Note that you do not need to open any HTTP or TCP ports to use runpodctl - terminal access is enough. You don't need to download locally from one pod to send to another - you can just run runpodctl on the pod itself to send files directly without using your local computer as a middleman.

Drag and drop through VSCode / Jupyter Notebook

If your code has one of these editors enabled, you can drag and drop straight from your desktop straight into the file structure of the pod with a supported browser- or failing that, use the upload function from the menu in the editor.

wget

If the file is out there retrievable on the Internet, you can use wget in the pod terminal to pull the file straight from that server.

(bcomfy) root@4ca01812e786:/workspace# wget https://huggingface.co/tencent/HunyuanVideo/resolve/main/hunyuan-video-t2v-720p/transformers/mp_rank_00_model_states.pt

Resolving huggingface.co (huggingface.co)... 18.164.174.118, 18.164.174.23, 18.164.174.55, ...
Connecting to huggingface.co (huggingface.co)|18.164.174.118|:443... connected.

HTTP request sent, awaiting response... 200 OK
Length: 25642314002 (24G) [binary/octet-stream]
Saving to: 'mp_rank_00_model_states.pt.1'

         mp_rank_00_m   1%[                        ] 387.65M  36.5MB/s    eta 10m 38s

Note that certain sites like CivitAI require an API key to download files from their servers, so special utilities like the CivitAI downloader may needed instead.

git

You can git clone repositories from git or Huggingface including large models by cloning the repo:

(bcomfy) root@4ca01812e786:/workspace# git clone https://huggingface.co/tencent/HunyuanVideo/
Cloning into 'HunyuanVideo'...
remote: Enumerating objects: 114, done.
remote: Counting objects: 100% (109/109), done.
remote: Compressing objects: 100% (108/108), done.
remote: Total 114 (delta 54), reused 0 (delta 0), pack-reused 5 (from 1)
Receiving objects: 100% (114/114), 47.32 KiB | 23.66 MiB/s, done.
Resolving deltas: 100% (54/54), done.

Remember to install and initialize git lfs if you intend on bringing down any files over 100mb:

apt-get update
apt-get install git
apt-get install git-lfs
git lfs install

scp / rsync

The general syntax for sending files to a Pod with SCP is as follows (execute this on your local machine, and replace the x's with your Pod's external TCP port and IP; for this example, they are 43201 and 194.26.196.6, respectively):

scp -P 43201 -i ~/.ssh/id_ed25519 /local/file/path root@194.26.196.6:/destination/file/path

Example of sending a file to a Pod:

scp -P 43201 -i ~/.ssh/id_ed25519 ~/documents/example.txt root@194.26.196.6:/root/example.txt

If you want to receive a file from your Pod, switch the source and destination arguments:

scp -P 43201 -i ~/.ssh/id_ed25519 root@194.26.196.6:/root/example.txt ~/documents/example.txt

The general syntax for sending files to a Pod with rsync is as follows (execute this on your local machine, and replace the x's with your Pod's external TCP port and IP):

rsync -e "ssh -p 43201" /source/file/path root@194.26.196.6:/destination/file/path

Learn more about scp and rsync in on our docs page here.

Package-specific methods

If you're using a pre-built package, these often have methods to download files provided. This will vary depending on the package. For example, text-generation-webui has a download-model.py you can call with a neat threaded downloader:

python3 download-model.py bartowski/Qwen2.5-Coder-32B-Instruct-exl2:6_5

RFC 1149

If you've got enough carrier pigeons or other suitably equipped birds available, feel free to print packet data out, attach it to their leg, and direct them towards your host's server's physical location. Note that this may not be particularly viable if you are on a different continent than the host as severe packet loss may occur.

(... okay, no, that's not a thing. There are no plans to implement RFC 1149 at RunPod at this time.)

But if you have any questions on specific transfer methods, feel free to refer to our docs!