これに関連して質問
問題の簡単な説明:
ソースツリー内にマウントポイントがある場合、-a
オプションを使用してもターゲットツリーにコピーしても、そのマウントポイント内部ファイルのタイムスタンプは保持されません。
詳細な説明:
これがソースツリーであると仮定します。
/home/ /home/
| |
me/ BACKUP/
| |
+----+----------+ +----+-------+
| | | | | |
data/ foo.txt boo.txt data/ foo.txt boo.txt
| |
a.txt a.txt
data/
上記は外部USBディスクが取り付けられている場所です。すべてがext4
ファイルシステムです。ソースのすべての内容は私に属しますme
。
BACKUP
また、バックアップUSBフラッシュドライブのマウントポイントでもあります。
このコマンドを実行した後、タイムスタンプを保持する外部の他のファイルやフォルダではなく、その下のすべてのファイルが現在作成されているかのように現在のタイムスタンプがあることがrsync -av --delete /home/me/ /home/BACKUP/
わかりました。/home/BACKUP/data/
/home/me/data/
data
問題は、rsync
上記の設定を使用してすべてのファイルとフォルダ、さらにはマウントポイントのタイムスタンプを維持するためにどうすればよいですか?
私は以下を使用しています:
>uname -a
Linux 3.5.0-17-generic #28-Ubuntu SMP x86_64 x86_64 x86_64 GNU/Linux
>rsync -v
rsync version 3.0.9 protocol version 30
答え1
からman rsync
:
-t, --times preserve modification times
あるファイルシステムから別のファイルシステムにファイルをコピーして保存しようとしているため、ほとんどc-time
の人はc-time
「生成時間」を理解していますが、ほとんどのUNIX / Linuxシステムでは正しくありません(Windowsファイルシステムは「生成」または「生成」時間です。を追跡します)。
ほとんどの場合、UNIXとLinuxではc-time
タイムスタンプを使用して最後のinodeを記録します。氏'歩く。 inodeの属性のいずれかが更新されると、inodeも変更されます。
- 作成(OPの場合)
- モード(権限)
- 所有者/グループ
- ハードリンク数
- 待つ(stat() システムコール)
c-time
OP は、ファイルを新しいファイルシステムにインポートするとファイルをアーカイブできません。新しいファイルシステムでこれらのファイルを生成することは、上記の条件の1つです(inode /ファイルの生成)。
答え2
hr3millerがすでに述べたように、-a(または--archive)は-rlptgoDと同じで、すでに同期時間を含みます。
ただし、rsyncがデータをコピーする場合、rsyncはNFS / FAT32 / NTFSマウントがユーザーと所有者を保持できない時間を設定しようとしません。 Rsync は次のような警告を発行します。
rsync: chown "/mnt/backup/postgres/hourly.0/primary/var" failed: Operation not permitted (1)
したがって、以下を使用してユーザーとグループを維持します。
-rlptD
変える
-rlptgoD
所有者とグループを維持しないオプションがある場合にのみ、このオプションを使用してください。シンボリックリンクやその他の機能を保存すると、この現象が発生する可能性があります。バックアップしたい各rsync機能(-r -l -p -t -g -o -D)のマニュアルページを注意深く読んでください。
答え3
このtouch
ツールを使用してこれを達成できます。この-r
パラメータは、あるファイル/フォルダから別のファイル/フォルダにタイムスタンプをコピーします。
cd srcParentDir
find srcDir -exec touch -r {} /target/dir/{} \;
または例えば:
cd /home/me
find . -exec touch -r {} /home/BACKUP/{} \;
次の文を実行します。
touch -r ./data/a.txt /home/BACKUP/./data/a.txt
touch -r ./foo.txt /home/BACKUP/./foo.txt
touch -r ./boo.txt /home/BACKUP/./boo.txt
したがって、デフォルトでは古いタイムスタンプが新しいファイルシステムにコピーされます。
ターゲットパスにスペースがある場合はエスケープする必要があります/home/my\ spaced\ path/
。{}
100%確信はありませんが、それがあなたに役立つと思います。
答え4
私はそれを使用し、rsync -az
それが私の修正時間を保存すると確信しています。今また確認してみました。