我们有一个文件系统:/foo
我们得到了另一个文件系统:/bar
问:如何将 /foo 中的所有文件复制到 /bar ?
我们没有空间来压缩它们,只能复制它们。但文件系统中可能存在符号链接、硬链接。所以需要保存这些以及所有者、权限、结构、隐藏文件!什么是最好的方法?
额外:带有奇怪字符的文件或块/字符文件
更新:我们可以使用 gzip 吗?如果需要通过网络复制,压缩将非常有用。
答案1
锐的评论差不多就够了;这应该复制所有内容,包括隐藏文件:
cd /foo; tar cpf - . | (cd /bar; tar xpvf -)
(运行为root
)。
如果要压缩两个tar
进程之间复制的数据,可以在管道中添加压缩器和解压缩器:
cd /foo; tar cpf - . | gzip -9 | (cd /bar; gunzip | tar xpvf -)
如果您的版本tar
支持它,您可以使用该z
标志:
cd /foo; tar cpzf - . | (cd /bar; tar xpzvf -)
(该-p
标志在某些平台上默认启用root
,我不确定 AIX 是否如此。)
答案2
Tar - 虽然非常通用 - 并不了解与 inode 数据相关的许多潜在问题。我强烈推荐一个变体
cd $src; find . | backup -if - | (cd $target; restore -xqf -)
几年前,我将其编写成一个“漂亮的脚本” - 但主要是我只是在命令行上使用上面的内容。
对于漂亮的脚本(从 2009 年开始!哎呀!)请参阅:http://www.rootvg.net/content/view/301/309/