【问题标题】:Copying modified files and their file structure复制修改后的文件及其文件结构
【发布时间】:2014-10-25 12:29:06
【问题描述】:

我还是 linux 脚本的新手,所以这可能有点微不足道。

作为脚本的一部分,我试图将所有修改过的文件(相对于我所做的原始备份)复制到另一个文件夹,同时保持文件结构。 我找到了这个方法:

find /SourceFolder/ -newer /BackupFOlder/ -exec cp --parents \{\} /Destination

但是上面的命令不起作用,给我错误: 发现:'exec' 缺少参数

为什么这不起作用?

我还发现了这个: Copy files preserving folder structure

但我只想使用 cp 命令。

非常感谢您的帮助。

【问题讨论】:

    标签: linux bash exec cp


    【解决方案1】:

    -exec 选项需要一个 ; 参数来告诉它命令在哪里结束,因为你可以在它之后有额外的 find 选项。

    find /SourceFolder/ -newer /BackupFOlder/ -exec cp --parents {} /Destination \;
    

    但是,更好的解决方案是使用rsync:

    rsync -a /SourceFolder /BackupFolder
    

    【讨论】:

    • 谢谢。这似乎成功了。 \{\} 和 {} 部分有什么区别?
    • 没有区别。这些字符没有必要转义,当它们之间没有任何东西时,它们没有任何特殊含义。
    • 好的,我看到了@Barmar。再次感谢。我也同意 rsync 是一个不错的选择。但这主要是为了学习。尝试编写不同的脚本以更好地编写 linux 脚本。
    【解决方案2】:

    试试

     tar cf - . | (cd <some other dir>; tar xfv -)
    

    【讨论】:

    • 谢谢。无论如何不使用tar?
    • 是的 - 但我知道tar 在所有(可能)unix 系统上
    • 是的,我还有一个不包含“tar”的“恢复”脚本。这也主要用于学习目的。尝试使用基本命令编写脚本。
    • 不,不是。这就是我不使用它的原因。鉴于我找到了很多使用 tar 的方法,我正在考虑使用 tar 编写另一个脚本。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-29
    • 2019-09-07
    • 2017-08-12
    • 2012-02-26
    • 1970-01-01
    • 1970-01-01
    • 2015-03-29
    相关资源
    最近更新 更多