求助:如何使用BASH实现目录间的文件变更同步?
用Bash实现目录间的变更同步
最佳解决方案:使用rsync命令
rsync是专门用于文件同步的工具,能完美处理文件的新增、修改和删除同步,比手动用cp/mv高效可靠。
步骤1:初始同步(Dir1 → Dir2)
初始状态Dir1包含example1.png、example2.png,Dir2为空,执行以下命令完成首次同步:
rsync -a --delete Dir1/ Dir2/
-a:归档模式,保留文件权限、修改时间等元信息,递归处理子目录(如果存在)--delete:删除Dir2中存在但Dir1已不存在的文件,确保两者内容完全一致- 注意路径末尾的
/:Dir1/表示同步Dir1内部的内容到Dir2,而非把Dir1目录本身复制到Dir2中
步骤2:同步删除操作
当你在Dir1中删除example2.png后,再次执行同样的rsync命令,即可让Dir2同步删除该文件:
rsync -a --delete Dir1/ Dir2/
你之前尝试的命令问题说明
cp * ..:仅将Dir1的文件复制到上级目录,未直接同步到Dir2,不符合需求mv *example*.png DIR2:这是移动文件操作,会将Dir1内的文件转移到Dir2,导致Dir1本身丢失文件,并非同步cd DIR1 && rm example2.png && cd ..:该删除操作本身没问题,但后续需要同步工具来让Dir2跟进变更
内容的提问来源于stack exchange,提问作者User
相关产品推荐
相关产品推荐

