Linux中传输文件的scp和rsync命令
Posted 砚台是黑的
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux中传输文件的scp和rsync命令相关的知识,希望对你有一定的参考价值。
scp
# 利用ssh传输文件
# 在linux下一般用scp这个命令来通过ssh传输文件。
# 1、从服务器上下载文件
scp username@servername:/path/filename /var/www/local_dir(本地目录)
# 例如scp root@192.168.0.101:/var/www/test.txt 把192.168.0.101上的/var/www/test.txt 的文件下载到/var/www/local_dir(本地目录)
# 2、上传本地文件到服务器
scp /path/filename username@servername:/path
# 例如scp /var/www/test.php root@192.168.0.101:/var/www/ 把本机/var/www/目录下的test.php文件上传到192.168.0.101这台服务器上的/var/www/目录中
# 3、从服务器下载整个目录
scp -r username@servername:/var/www/remote_dir/(远程目录) /var/www/local_dir(本地目录)
# 例如:scp -r root@192.168.0.101:/var/www/test /var/www/
# 4、上传目录到服务器
scp -r local_dir username@servername:remote_dir
# 例如:scp -r test root@192.168.0.101:/var/www/ 把当前目录下的test目录上传到服务器的/var/www/ 目录
sudo scp -r include lib user@ip:~
# 注:目标服务器要开启写入权限。
rsync
# 1、将文件从本地同步拷贝至远程目录
rsync -avz /root/temp/ user@ip:/root/temp
# 2、将文件从远程目录同步至本地
rsync -avz user@ip:/root/temp /root/temp
# 比如:
rsync -avzt --progress user@ip:/storage/data/xxx.mp4 /home/bng/sil/sil-example-data/sil-test-datas
# 3、不要覆盖目标位置上已经修改的文件
rsync -avzu user@ip:/root/temp /root/
# 4、在传输过程中查看rsync进度
rsync -avz --progress /root/temp/ user@ip:/root/temp
# 5、在目标目录中删除源目录不存在的文件
# 如果文件不在源中而是在目标中存在,则可能希望在rsync同步期间删除目标上的文件,在这种情况下,请使用 --delete选项 rsync使用--delete选项删除目标目录中不包含源目录的文件
rsync -avz --delete /root/temp user@ip:/root
# 6、文件传输过程中的include和exclude模式
# rsync允许在进行同步时提供要包括和排除文件或目录的模式
# 例如:在上面的示例中,它仅包括以’P’开头的文件或目录,并排除所有其他文件
rsync -avz --include \'P*\' --exclude \'*\' user@ip:/var/lib/rpm/ /root/temp/
# 7、不传输大文件,可以使用 rsync --max-size选项告诉rsync不要传输大于指定大小的文件
# -max-size=1M使rsync仅传输小于或等于1M的文件。单位可以是K,M,G等
# 还可以使用--min-size=参数,指定传输最小文件的大小
rsync -avz --max-size=\'1M\' root@192.168.43.137:/var/lib/rpm/ /root/temp/
# 8、拷贝指定文件
# -t --times:保持mtime属性。强烈建议任何时候都加上"-t",否则目标文件mtime会设置为系统时间,导致下次更新
# -a --archive :归档模式,表示递归传输并保持文件属性。等同于"-rtopgDl"
# -z :传输时进行压缩提高效率。
# -v:显示rsync过程中详细信息。可以使用"-vvvv"获取更详细信息
rsync -avzt --progress /storage/sil-test-datas/文件 USER@IP:/storage/sil-test-datas
# 下面的是普通模式,耗费带宽
# 两种模式都是从当前机器复制一份指定文件到远端IP机器的指定位置
rsync -av --progress --inplace --rsh=\'ssh -p 22\' ./文件 用户名@远端目标IP:/storage/sil-test-datas
rsync -avzt --progress ./sil-example-data.tar.gz username@ip:~/sil
Linux scp命令详解
scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令, scp传输是加密的,可能会稍微影响一下速度。另外,scp还非常不占资源,不会提高多少系统负荷,在这一点上,rsync就远远不及它了。虽然 rsync比scp会快一点,但当小文件众多的情况下,rsync会导致硬盘I/O非常高,而scp基本不影响系统正常使用
常见命令参数
usage: scp [-1246BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file] [-l limit] [-o ssh_option] [-P port] [-S program] [[[email protected]]host1:]file1 ... [[[email protected]]host2:]file2 -q: quiet -r: recuersive -p: properity -v: verbose -i: identity_file 【从指定文件中读取传输时使用的密钥文件,此参数直接传递给ssh】 -P: port
常见命令展示
scp命令的实际应用概述:
从本地服务器复制到远程服务器:
(1) 复制文件:
命令格式:
scp local_file [email protected]_ip:remote_folder
或者
scp local_file [email protected]_ip:remote_file
或者
scp local_file remote_ip:remote_folder
或者
scp local_file remote_ip:remote_file
第1,2个指定了用户名,命令执行后需要输入用户密码,第1个仅指定了远程的目录,文件名字不变,第2个指定了文件名
第3,4个没有指定用户名,命令执行后需要输入用户名和密码,第3个仅指定了远程的目录,文件名字不变,第4个指定了文件名
(2) 复制目录:
命令格式:
scp -r local_folder [email protected]_ip:remote_folder
或者
scp -r local_folder remote_ip:remote_folder
第1个指定了用户名,命令执行后需要输入用户密码;
第2个没有指定用户名,命令执行后需要输入用户名和密码
以上是关于Linux中传输文件的scp和rsync命令的主要内容,如果未能解决你的问题,请参考以下文章
linux服务器间传文件命令scp,rsync以及排除部分文件夹