在Linux下需要对大量小文件进行移动或复制时,用cp、mv都会显得很没有效率,可以用tar先压缩再解压缩再结合nc使用网络传输的方式。
一、快速复制
1、不同磁盘下复制
# tar cvf - /src | tar xvf - -C /dest
2、跨网络主机复制
在网络环境中传输时,打包再结合nc命令,通过管道和tcp端口进行传输。比如我当前要把A机器的目录拷贝到B机器中。
- B 机器监听端口并将收到的数据用tar展开
# B 机器 用nc来监听一个端口,并且将收到的数据用tar展开。-l代表监听模式。
# nc -l 1234 |tar -C /target_dir -zxf -
- A 机器上通过nc 和 tar发送 /src 目录
# tar -zcf - /src/ |nc 10.0.0.1 1234
二、快速删除
1、用法示例
# 先创建一个空目录
# mkdir /tmp/empty/
# rsync --delete-before -av /tmp/empty/ /mnt/
2、参数说明
-a 归档模式,表示以递归方式传输文件,并保持所有文件属性
-v 详细输出模式,去掉的话可以减少控制台出
rsync提供了一些跟删除相关的参数
# rsync --help | grep delete
--del an alias for --delete-during
--delete delete extraneous files from destination dirs
--delete-before receiver deletes before transfer, not during
--delete-during receiver deletes during the transfer
--delete-delay find deletions during, delete after
--delete-after receiver deletes after transfer, not during
--delete-excluded also delete excluded files from destination dirs
--delete-missing-args delete missing source args from destination
--ignore-errors delete even if there are I/O errors
--max-delete=NUM don't delete more than NUM files
其中--delete-before 接收者在传输之前进行删除操作