Linux环境下移动一个文件夹下的所有文件到另一个文件夹

Linux环境下移动一个文件夹下的所有文件到另一个文件夹

研究命令

最近需要把一个环境里的文件,迁移到另一个环境里去,但是两个环境里的数据会有一些同名的子目录,要求不能覆盖数据而是合并,迁移之前我先做了文件备份,然后网上查了下命令。

#移动a文件夹下的所有文件到b文件夹
mv /a/* /b  

但是如果有重名的子文件夹或者文件的话,这个命令会一直提示是否需要overwrite
然后我查到

#强制移动a文件夹下的所有文件到b文件夹,如果有重复会备份文件
mv -fb /a/* /b  

查询问题

命令很快执行完,我以为任务完成了,后面测试反馈有些文件找不到,我就去找问题,发现有些目录被覆盖掉了。

如下图所示,上面的命令如果有相同的目录,会生成同名文件夹然后加一个~
在这里插入图片描述
后面我发现执行这个命令,如果有同名子目录,a文件夹里的子目录会把之前b文件夹里的同名子目录覆盖掉。
比如:
a文件夹下子目录结构如下
在这里插入图片描述

b文件夹下子目录结构如下
在这里插入图片描述

执行上面的命令,wangdongqin/2021就变成a文件夹下的结构只有2一个子目录了,把之前b文件夹下的子目录全覆盖了。

这样肯定不符合我的需求,还好我在mv参数上加了-b,生成了备份文件。

解决问题

然后我咨询运维人员,得到了新的命令

#强制移动a文件夹下的所有文件到b文件夹,如果有重复会备份文件
rsync -azvr wangdongqin~/ wangdongqin/ 
-a选项,它保留了所有人和所属组、时间戳、软链接、权限,并以递归模式运行。
-z来启用压缩。
-v是可视化。
-r是递归。

再用diff命令来对比两个文件夹是否有差别

diff -r wangdongqin~/ wangdongqin/ 

发现没有问题了,两个目录的文件完全合并了,而不是覆盖。

然后删除重复的 ~文件夹

find ./ -type d -name '*~'| xargs rm -rf

总结

做任何操作之前一定要备份数据,然后不熟悉的命令最好先测试下效果,然后遇到问题,自己解决不了,可以去求助一下专业人士。

  • 10
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值