ターゲットにファイルが存在し、ターゲットより新しい場合にのみディレクトリを再帰的にコピーします。

ターゲットにファイルが存在し、ターゲットより新しい場合にのみディレクトリを再帰的にコピーします。

ターゲットにファイルが存在し、ターゲットよりも新しい場合にのみファイルやディレクトリをコピーするにはどうすればよいでしょうか。ディレクトリの場合は、再帰的に
次のような機能を備えたコピー

 $ ls -a ~/.config
 gtk-2.0/             
 gtk-3.0/
 SpeedCrunch/

 $ ls -a /other/path/home/.config/
 gtk-2.0/             
 gtk-3.0/
 SpeedCrunch/


$ rsync -u --existing ~/.config /other/path/home/
skipping directory .

働けません。

Linuxユーティリティは何ですか?また、それをどのように実行/解決しますか?ありがとうございます

答え1

素早い:

再帰スイッチ「-r」を含めるのを忘れました:

rsync -u --existing -r ~/.config /other/path/home/

追加情報:

また、次のように、いくつかの重要な属性を保持するだけでなく、再帰を含めるために、-aswitch を使用することを検討することもできます。-rlptgoD

  • -r: ディレクトリを再帰的に調べる
  • -l: シンボリックリンクをシンボリックリンクとしてコピーする
  • -p: 権限を保持する
  • -t: 変更時刻を保存する
  • -g: グループを保存
  • -o: 所有者を保持する (スーパーユーザーのみ)
  • -D: --devices --specials と同様に特殊ファイルを保存します

テストには以下を使用します。

mkdir src
touch src/file{1..3}
touch src/thefile
# Destination:
mkdir dst
touch dst/file{1..3}
touch -d 20201023 dst/thefile
# List all
free -D src dst

今すぐやってみて下さい:

rsync -rt -uPv --existing src dst/

私が使用したのは:

  • -r: ディレクトリを再帰的に調べる
  • -t: 変更時刻を保存する
  • -u: 受信側で新しいファイルをスキップする
  • -P: 転送中の進行状況を表示
  • -v: 詳細度を上げる
  • --existing: 受信側で新しいファイルの作成をスキップします

関連情報