【问题标题】:Copy non-directory over directory and vv在目录和 vv 上复制非目录
【发布时间】:2014-08-11 16:30:43
【问题描述】:

如何避免以下类型的错误,并强制 操作发生?:

  /bin/cp: cannot overwrite directory `./foo' with non-directory
  /bin/cp: cannot overwrite non-directory `./usr/share/doc' with directory `/usr/share/doc'

要备份一个分区,我想复制一个新版本的 目录到旧版本,使它们相同,与 命令:

/bin/cp -xau --remove-destination  / . 

目标目录位于 ZFS 文件系统中 定期快照。相对较少的文件(或目录) 改变。

这就是为什么我不想只删除整个 目标目录——这将不必要地制作快照 大。

这是在 Linux 中。

谢谢。

【问题讨论】:

  • 这个问题似乎离题了,因为它是关于 Unix 的,应该在 unix.stackexchange.com 上
  • 一个安静奇怪的错误。您确定./usr/share/doc/usr/share/doc 都是目录吗?
  • 1.抱歉,以后有任何类似的问题都会去 unix.stackexchange.com。
  • 2.是的,那是消息的复制和粘贴。我想覆盖的 ./usr/share/doc 是一个链接。我还创建了小测试用例并得到了同样的错误。如果您想知道发生了什么:早些时候我的根分区空间不足,因此将 /usr/share/doc 移动到其他地方并链接它。后来我恢复了一些空间,能够将 /usr/share/doc 带回根分区,然后想要最新的备份快照来反映这一点。

标签: linux cp


【解决方案1】:

以下似乎效果更好(但并不完美):

tar cf /mytmp/root.tar --one-file-system / 
cd /backup/root
tar xvf /mytmp/root.tar --keep-newer-files

请注意,当 /mytmp 不在根目录中时,这会更好 分割。 :-)

第二个 tar 命令的输出是 700K 行。我捕获了 它在 emacs 缓冲区中并在其中搜索错误消息。 不想替换目录有两个问题 带有链接,我手动处理的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-22
    • 1970-01-01
    • 2014-04-09
    • 2011-11-03
    • 2018-03-01
    • 2012-05-23
    • 2023-04-08
    相关资源
    最近更新 更多