在 Linux 中使用 cp 进行高级合并目录树

在 Linux 中使用 cp 进行高级合并目录树

我需要:

  1. /sourcefolder/*在保留用户权限的情况下,将树中的所有文件夹(包含所有文件,包括隐藏文件)复制到/destfolder/

  2. 如果与某个文件有冲突(中存在同名文件destfolder),则

    • 使用标准规则重命名目标文件夹中的文件,例如在文件名中添加“old”前缀(readme.txt 将变为 oldreadme.txt)
    • 将冲突的文件从源复制到目标

文件夹之间的冲突应该是透明的 - 如果源文件夹和目标文件夹中都存在相同的目录,则保留它并根据上述规则递归复制其内容。

我还需要一份 .txt 报告,描述添加到目标文件夹的所有文件/文件夹以及已重命名的文件。

我怎样才能做到这一点?

答案1

rsync 可能就是您想要的。

以 root 身份尝试如下操作:

rsync --backup --suffix=old --verbose --archive /源文件夹/ /目标文件夹/

有关选项的详细信息,请参阅“man rsync”。

输出(希望)适合您的文本报告。因此,请在末尾运行以下命令:

> 报告.txt

相关内容