Skip to content

Instantly share code, notes, and snippets.

@Sakib37
Created February 22, 2019 14:25
Show Gist options
  • Save Sakib37/b811ae08646243e8e72508fda0e8dbca to your computer and use it in GitHub Desktop.
Save Sakib37/b811ae08646243e8e72508fda0e8dbca to your computer and use it in GitHub Desktop.
useful "scp" commands to trasfer files
# Copy ssh key to a remove server
#################################
ssh-copy-id LOCAL_PATH_TO_THE_KEY USER_NAME@REMOTE_HOST:REMOTE_LOCATION
# ssh-copy-id may not be installed in the remote server. In that case, First create .ssh directory on remote server
ssh USER_NAME@REMOTE_HOST:REMOTE_LOCATION "umask 077; test -d .ssh || mkdir .ssh"
## cat local public key file and pipe over ssh to append the public key in the remote serve. Example-
cat ~/.ssh/id_rsa.pub | ssh user@remote_ip_or_hostname "cat >> .ssh/authorized_keys"
# Copy file to the remote system
#################################
# Basic scp command
# From host to remote
scp source_file_name dst_username@destination_host:destination_folder
# From remote to host
scp dst_username@destination_host:destination_file ~/my_local_file.txt
# or just download the file
scp user@192.168.1.3:/some/path/file.txt
# Transfer multiple files
# From host to remote
scp foo.txt bar.txt username@remotehost:/path/directory/
# From remote to host
scp username@remotehost:/path/directory/\{foo.txt,bar.txt\}
# or just download
scp root@192.168.1.3:~/\{abc.log,cde.txt\}
# To copy recusively use '-r' parameter
scp -r ~/Downloads root@192.168.1.3:/root/Downloads
# Copy across two remote host
scp user1@remotehost1:/some/remote/dir/foobar.txt user2@remotehost2:/some/remote/dir/
# For verbose output use the '-v' parameter
scp -v Label.pdf mrarianto@202.x.x.x:.
# Speed up file transfer by using '-C'(Capital) to compress
scp -vrC ~/Downloads root@192.168.1.3:/root/Downloads
# Limit bandwidth for transfer by using 'l' parameter
scp -vrC -l 400 ~/Downloads root@192.168.1.3:/root/Downloads # bandwidth 4 kibt/s
# Connect to different port number on remote host
scp -vC -P 2200 ~/test.txt root@192.168.1.3:/some/path/test.txt # remote port 2200
# '-p' option (smallcase), would preserve modification times, access times, and modes from the original file.
scp -C -p ~/test.txt root@192.168.1.3:/some/path/test.txt
# To use specific key file use '-i' option
scp -vCq -i private_key.pem ~/test.txt root@192.168.1.3:/some/path/test.txt
# To use different ssh_config file specify the file using '-F' option
scp -vC -F /home/user/my_ssh_config ~/test.txt root@192.168.1.3:/some/path/test.txt
# Speed up the transfer by using different encryption(default AES). '-c' option to choose different cypher
scp -c blowfish -C ~/local_file.txt username@remotehost:/remote/path/file.txt
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment