我想复制一个home
包含几 GB 数据和常用配置文件的 Linux 用户目录进行备份。源目录和备份目录应该完全具有相同的内容。操作系统是Lubuntu。
该目录包含隐藏文件和子目录。经过一番谷歌搜索后我发现
cp -r /source-directory /backup-directory
是适当的命令。
源目录文件系统是ext4,目标目录是NTFS。复制后,diff -qr /source-directory /backup-directory
没有给出任何输出(所以我认为没有差异)。但是du
、 或du -b
or du --apparent-size
all 总是为源目录和备份目录提供不同的输出。
为什么?是命令错误还是用法du
错误?
答案1
当添加文件和子目录时,根据需要将附加块分配给目录。随后删除这些文件和子目录不会导致处理现在为空/可重用的分配。因此,复制操作的目标目录比其源目录稍小是很常见的。
diff
如果您想要热模糊确认,您可以递归源目录和目标目录来确认所有内容都已复制。
顺便说一句,rsync
它也是复制结构的理想选择:
rsync -avz /source-directory/ /backup-directory
源目录上的尾部斜杠表示源目录名称不作为其第一个子目录包含在备份目录中。
这些-avz
选项指示rsync
在存档模式下复制以保留权限、所有权、符号链接等,在传输过程中使用压缩并详细报告操作。
答案2
不同的文件系统在为文件分配空间时可能有不同的开销。此外,目录条目的存储方式也可能有所不同。可惜你不告诉什么不同的输出是。