数GBのデータと通常の設定ファイルを含むLinuxユーザーディレクトリをバックアップ用にコピーしたいのですがhome
、ソースディレクトリとバックアップディレクトリは、同じ内容。OSはLubuntuです。
ディレクトリには隠しファイルとサブディレクトリが含まれています。グーグルで調べたところ、
cp -r /source-directory /backup-directory
適切なコマンドでした。
ソース ディレクトリのファイル システムは ext4 で、コピー先ディレクトリは NTFS です。コピー後、diff -qr /source-directory /backup-directory
出力は何も返されません (したがって、違いはないと思われます)。ただしdu
、、またはdu -b
、またはdu --apparent-size
all は、ソース ディレクトリとバックアップ ディレクトリに対して常に異なる出力を返します。
なぜですか? コマンドが間違っていたのでしょうか、それともこの使用法がdu
間違っていたのでしょうか?
答え1
ファイルやサブディレクトリが追加されると、必要に応じて追加のブロックがディレクトリに割り当てられます。その後これらのファイルやサブディレクトリを削除しても、空になった/再利用可能な割り当ては破棄されません。したがって、コピー操作の宛先ディレクトリがソースよりもわずかに小さくなることはよくあります。
diff
安心できる確認が必要な場合は、ソース ディレクトリと宛先ディレクトリを再帰的に実行して、すべてがコピーされたことを確認できます。
余談ですが、rsync
構造を複製するのにも最適です。
rsync -avz /source-directory/ /backup-directory
ソース ディレクトリの末尾のスラッシュは、ソース ディレクトリ名がバックアップ ディレクトリの最初のサブディレクトリとして含まれていないことを意味します。
オプションは、転送プロセス中に圧縮を使用し、アクションを詳細に報告しながら、権限、所有権、シンボリック リンクなどを保持するためにアーカイブ モードでコピーするように-avz
指示します。rsync
答え2
異なるファイルシステムでは、ファイルスペースを割り当てる際のオーバーヘッドが異なる場合があります。また、ディレクトリエントリの格納方法も異なる場合があります。残念ながら、何出力はそれぞれ異なります。