
ターゲットにファイルが存在し、ターゲットよりも新しい場合にのみファイルやディレクトリをコピーするにはどうすればよいでしょうか。ディレクトリの場合は、再帰的に
次のような機能を備えたコピー
$ 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/
追加情報:
また、次のように、いくつかの重要な属性を保持するだけでなく、再帰を含めるために、-a
switch を使用することを検討することもできます。-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: 受信側で新しいファイルの作成をスキップします