ソースディレクトリで変更されたファイルへのパスのみをrsyncとgrepする方法

ソースディレクトリで変更されたファイルへのパスのみをrsyncとgrepする方法

grepつまり、rsyncを使用してパスとファイル名を変更(追加、削除、変更)して印刷する方法はありますか?

次のコマンドを試しましたが、パスとファイルを別々の行に変更しました。

rsync -avnc $source $destination
source/10101/10102/10103/
source/10101/10102/10103/demo.fts

注:ソースコードには何千ものサブディレクトリがあり、絶対パスで変更されたファイルのみを印刷したいと思います。

ベストアンサー1

ディレクトリのタイムスタンプ、ユーザー/グループの設定、または権限がターゲットディレクトリと異なるため、ディレクトリパスを取得します。

ディレクトリタイムスタンプの確認を中止するには、rsync次の--omit-dir-timesフラグを使用します。

rsync -avc -n --omit-dir-times "$source/" "$target"

rsyncファイルとディレクトリの絶対パスは表示されず、送信される最上位ディレクトリへの相対パスが表示されます。

--itemize-changes(または-i--verboseの代わりに(または)を使用すると、-v次の詳細情報を取得できます。なぜターゲットのファイルが更新されています。

はい(出力に説明を追加):

$ rsync -ani s/ t
.d..t...... ./          # directory timestamp differs
>f+++++++++ file        # new file

$ rsync -a s/ t

$ touch s/file
$ rsync -ani s/ t
>f..t...... file        # file timestamp differs

$ echo hello >s/file
$ rsync -ani s/ t
>f.st...... file        # file size and timestamp differs

$ rsync -acni s/ t
>fcst...... file        # file size timestamp and checksum differs

$ rm s/file
$ rsync -acni s/ t
.d..t...... ./          # directory timestamp differs
$ rsync -acni --delete s/ t
*deleting   file        # file has been deleted in source
.d..t...... ./          # directory timestamp differs

--itemize-changesシステムマニュアルのこのオプションのマニュアルを参照してください。rsync

おすすめ記事