将目录复制到外部硬盘

将目录复制到外部硬盘

我正在尝试将目录复制到外部硬盘。我安装了设备然后输入:cd root tar -cf - * | (cd /mnt ; tar -xpf -)

我收到此错误消息:“懦弱地拒绝创建空存档”

当我ls对同一个根目录执行操作时(它根本不是空的),我需要的所有文件都在那里。

为什么会出现这种情况?

答案1

如果您想复制根文件系统并担心特殊文件和设备,最好的方法是:

  • 首先使用挂载的绑定选项将 / 挂载到子目录中,这样您就不必担心 /proc、/dev、/sys 和其他挂载的文件系统
  • 然后使用知道如何处理特殊文件的命令,例如 cp -a 或 rsync -a

假设您已将外部驱动器安装在 /mnt/external 下

mkdir /mnt/root
mount / /mnt/root -o bind
cp -a /mnt/root/* /mnt/external/

或者

rsync -aP /mnt/root/ /mnt/external/

或者(如果你非常喜欢 tar,顺便说一句,这是最糟糕的选择)

tar -C /mnt/root -cf - ./ | tar -C /mnt/external -xpf -

将 -v 添加到上述任何一项以获得详细输出,但它会减慢该过程

答案2

你为什么不直接使用呢cp -pr source destination

反正:

cd ~/tmp/source/;tar -cpf - * | (cd ~/tmp/destination;tar -xpf -)

工作得很好。

答案3

我发现复制整个目录结构的最佳方法是rsync

# rsync -avP /path/to/source/* /path/to/destination/

这还有一个优点,您可以通过 ssh 与远程目录进行交互。

答案4

请使用 POSIX帕克克斯公用事业。

与cp不同,pax 在每个系统上的工作方式都相同。使用 pax,您始终可以安全地复制包含特殊文件(例如设备节点)的文件系统。

要将一个文件系统 /mnt/foo 复制到 /mnt/bar,请保留权限、时间戳和特殊文件:

# cd /mnt/foo
pax -rw -pe -X . /mnt/bar/

相关内容