Linux文件比对,批量复制
--背景
工作中突然有一天文件服务器空间满了,导致文件存不进去,立马换了另外一台服务器作为文件服务器,将服务器挂载上去,原来的服务器修复之后需要重新换回来,但是需要将临时使用的服务器内的文件迁移至原文件服务器。
--解决办法
第一种方法:
第一步,记录一个文件夹的树结构
find /home/jp/UploadFile/vehicle/2019/03/16 -maxdepth 1 -printf "%P\n" | sort > /home/jp/temp
第二步,将比对文件夹的树结构和记录的树结构做比对
find /home/jp/UploadFile/vehicle/2019/03/16/16 -maxdepth 1 -printf "%P\n" | sort | diff /home/jp/temp - > /home/jp/diff.txt
第三步,将比对结果按格式输出
awk '/>/{printf("%s%s%s\n","cp /home/jp/UploadFile/vehicle/2019/03/16/16/",$2," /home/jp/UploadFile/vehicle/2019/03/16")}' /home/jp/diff.txt > /home/jp/cp.txt
在linux上执行生成的文件内的命令即可
第二种方法:
直接使用scp 命令 scp 源端目录 目标端用户@目标端IP:目标端目录 如 scp /home/test/test.jpg root@192.168.1.18:/home/test/
需要注意的是文件可以直接用上面的命令,但是直接跨服务器复制文件夹的话 需要在 scp 后面加上 -r 如: scp -r /home/test/ root@192.168.1.18:/home/test/
----------将文件复制过去后需要注意源端文件和文件夹权限问题,如果用户没有权限将访问不了对应资源-----------