在服务器程序的部署运维过程中,我们经常需要将文件从一个服务器拷贝到另一个服务器中。可以使用ftp,可以使用samba服务,这里我们介绍scp命令进行文件的拷贝和传输。
scp 是 secure copy 的缩写, scp 是 linux 系统下基于 ssh 登陆进行安全的远程文件拷贝命令。
scp 是加密的,rcp 是不加密的,scp 是 rcp 的加强版。
scp [-1246BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file] [-l limit] [-o ssh_option] [-P port] [-S program] [[user@]host1:]file1 [...] [[user@]host2:]file2
场景1:
本地文件复制到远程服务器:
scp local_file remote_username@remote_ip:remote_folder 或者 scp local_file remote_username@remote_ip:remote_file 或者 scp local_file remote_ip:remote_folder 或者 scp local_file remote_ip:remote_file
信息:本地文件 拷贝到远程目录,或者可以直接指定到新服务器上的文件名称,看实例:
此时文件名称没有变化,直接拷贝到新服务器的/jenkins目录下;
此时新服务器下/jenkins/目录下,出现了test-name.log这个文件。
注意,这里是需要输入密码的,如果按照后两种写法,甚至还要输入用户名。
如果想一句搞定,可以使用sshpass在语句中将密码输入:
本地没有sshpass命令的,可以yum install sshpass -y进行安装。
场景2:
本地目录复制到远程服务器上:
scp -r local_folder remote_username@remote_ip:remote_folder 或者 scp -r local_folder remote_ip:remote_folder
信息:
如果远程目录存在,那么本地目录拷贝过去就直接放在了远程目录下;
如果远程目录最后一层不存在,那么本地目录拷贝过去就以指定的不存在的新目录名称存放;
如果远程目录多层都不存在,会报错:No such file or directory.
场景3:远程服务器文件复制到本地
scp root@www.runoob.com:/home/root/others/music /home/space/music/1.mp3
场景4:远程服务器文件目录复制到本地
scp -r www.runoob.com:/home/root/others/ /home/space/music/
场景3和场景4只是1和2的参数位置相互调换位置,此处就不再给出实际演示的例子。