linux系统间文件传输的几种方法---快速删除的方法

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端没有的文件

原文地址:https://www.cnblogs.com/luniverseg/p/12712039.html