GNU/Linux >> Linux の 問題 >  >> Linux

[解決済み]:rsyncが隠しファイル/ディレクトリをコピーしなかった理由とアスタリスクに隠し(ドット)ファイルが含まれていないのはなぜですか?

rsyncを使用しました 特定のユーザーディレクトリをあるストレージデバイスから別のストレージデバイスにコピーするコマンド。警告/エラーをスローすることなく、操作は正常に完了しました。しかし、驚いたことに、コピーされるデータは約167GBで、コピーされたデータはわずか1.4GBでした。 「du」コマンドを使用してソースフォルダと宛先フォルダのディスクサイズを計算し、このチュートリアル(duからの不安定なディスク使用統計を修正する方法)に従って、「du」が不安定な結果を表示しないことを確認しました。以下は、シナリオを説明するスナップショットです。

シナリオ: 古いストレージマウントポイントは「/sata1/ home / ramya」であり、新しいストレージマウントポイントは「/ tmp / home/ramya」であると仮定します。前に述べたように、私は rsyncを使用しました 以下に示すようにディレクトリをコピーするには:

usr/bin/rsync -avzlh /sata1/home/ramya/* /tmp/home/ramya/ | tee /tmp/$(date+"%F_%R")-backup.log

上記のコマンドの「アスタリスク」に注意してください(これが問題でした。理由については、折り目の下で説明します)

duコマンドの不一致の結果:

du ソースディレクトリ(/ sata1 / home / ramya /)のコマンド出力:

# du -chs /sata1/home/ramya/
167G    /sata1/home/ramya/
167G    total

du 宛先ディレクトリ(/ tmp / home / ramya)のコマンド出力:

# du -chs /tmp/home/ramya/
1.4G /tmp/home/ramya/
1.4G total

上記のスナップショットから、ソースディレクトリのサイズが167 GBで、コピーされたディレクトリのサイズが1.4GBであることがわかります。では、残りのデータはどこにありますか?問題を解決した方法を説明しましょう。

解決策:

問題をデバッグするために、 duを使用しました 以下に示すように、ソースフォルダーと宛先フォルダー内の各ファイルのサイズを確認するコマンド:ファイルを一覧表示し、ファイルサイズを比較します。

bash-3.2#du -h -x /sata1/home/ramya 
15G /sata1/home/ramya/.g4
48M /sata1/home/ramya/1SVC
13G /sata1/home/ramya/.g8
120M /sata1/home/ramya/techg/.techla
90G /sata1/home/ramya/.openVAS.tar-gz
16G /sata1/home/ramya/.VSL.zip
...
...
bash-3.2#du -h -x /tmp/home/ramya 
1G /tmp/home/ramya/samplejobtoec
48M /tmp/home/ramya/1SVC
41M /tmp/home/ramya/M15
12K /tmp/home/ramya/techglimpse/openvas.txt
134M /tmp/home/ramya/etc/pki
264K /tmp/home/ramya/NAMD_CV
...
...

上記の出力から、隠しファイルはコピーされておらず、「*" (asterisk)が原因であることがわかりました。 rsyncで使用されます 指図。アスタリスクは、現在作業中のすべてのファイルを展開します 名前がドットで始まるファイルを除くディレクトリ (隠しファイル)。したがって、rsync 隠しファイルを引数として受け取ることはありません。したがって、解決策は、(アスタリスクではなく)ディレクトリ名全体を rsyncの引数として使用することです。 コマンド。

rsync -avzlh --ignore-existing /sata1/home/ramya/ /tmp/home/ramya/ | tee /tmp/$(date+"%F_%R")-backup.log

注:両方のパスの末尾にあるスラッシュ。他の構文は予期しない結果につながる可能性があります!

出来上がり!うまくいきました。


Linux
  1. du コマンドは隠しディレクトリを解析しません

  2. Linuxで非表示の(ドットで始まる)ファイルとサブディレクトリをコピーする方法は?

  3. rsync が Linux で /sys からファイルをコピーできないのはなぜですか?

  1. findコマンドを使用してLinux上のファイルとディレクトリを検索します

  2. Linuxでファイルとディレクトリをコピーする

  3. LinuxでRsyncコマンドを使用するにはどうすればよいですか?

  1. Linuxでファイルとディレクトリをコピーする方法

  2. Linuxを使用してディレクトリとファイルを削除する方法

  3. Linux および Unix でファイルをコピーする方法10 cp コマンドの例