1. tar -zcvf - * | ssh root@103.244.20.100 "cd /media/data/downloads; tar -zxf -" #将当前目录的文件打包并压缩,然后用ssh传输到远程电脑再解压。
tar -zcvf - Downloads/ | ssh visa@58.132.200.140 "cd /media/data; tar -zxf -" #直接压缩目录传输。
2.nc:(没有IP的先)
接收端:local: nc -l port > a.txt eg: nc -l 10086 > a.txt "监听本机10086端口,将收到数据存入a.txt文本中
发送端:remote: nc ip port < a.txt eg: nc 192.168.1.1 10086 < a.txt "将a.txt文本中的数据发给192.168.1.1主机的10086端口
接收端:nc -lvp 10086 | tar -xvf - "接收端地址192.168.1.10
发送端:tar -cvf - * | nc 192.168.1.10 10086
下面这个不太好用......
发送端:tar -czf - * | nc -l 10086 "将本目录中所有文件打包传输到本地端口10086,假设本地IP为:192.168.1.10
接收端:nc 192.168.1.10 10086 | tar -xzf - "将192.168.1.10中10086的端口的数据接收,并解包到当前目录
3. scp -C * root@103.244.20.100:/media/data/downloads/ #这个比较慢 (感觉-C这个压缩没太大用处)
scp -r Downloads/ root@103.244.20.100:/media/data/ #复制传输Downloads这个目录
4.上面三个都不支持断点续传,如果要传输一个大目录,且里面有很多小文件,可以使用rsync,支持断点续传,增量传输
rsync -r /mnt/usr/local/apache-tomcat-8.5.24 visa@58.132.200.140:/mnt/data #一般使用这个就可以,复制本地目录到远程,本地目录不加“/”,复制目录本身,如果加“/”,则复制目录下内容,不复制目录本身。
rsync -avPW /mnt/usr/local/apache-tomcat-8.5.24 visa@58.132.200.140:/mnt/data #要是尽量保持文件权限,属性之类的,可以使用-a选项。-W这个选项如果单个文件较大时,不建议使用,当然后,如果带宽够大也无所谓。
rsync -avP --delete /mnt/usr/local/apach-tomcat-8.5.24 -e 'ssh -p 222' visa@58.132.200.140:/media #可以增量传输更快,更完整.
rsync -r --progress /mnt/usr/local/apach-tomcat-8.5.24 -e 'ssh -p 222' visa@58.132.200.140:/media #如果ssh的端口号变了,可以加上-e 'ssh -p 222'
详细用法请看:https://www.cnblogs.com/f-ck-need-u/p/7221713.html
5.使用rsync快速删除有大量文件的目录
a.先建立一个空目录 mkdir /tmp/empty
b.使用rsync命令用/tmp/empty目录覆盖需要删除的目录 rsync --delete-before -r /tmp/empty /data/test
选项解释:
-r 以递归的方法复制目录
--delete-before 在复制文件之前先清空目标目录,删除receiver端有而sender端没有的文件