rsyncオプションが--list-only
やや間違った出力を与えるようです。これは私のテストファイルです。
~/src$ ls
lrwxrwxrwx 1 michael michael 23 Sep 5 09:19 far_symlink -> /home/michael/Documents
-rw------- 1 michael michael 0 Sep 5 09:18 file
lrwxrwxrwx 1 michael michael 4 Sep 5 09:18 near_symlink -> file
転送するファイルのリストが必要で、シンボリックリンクは必要ないので、次のように実行します--list-only
。
~/src$ rsync -r --no-links --list-only ./ ~/dest
drwx------ 4,096 2018/09/05 09:19:05 .
lrwxrwxrwx 23 2018/09/05 09:19:05 far_symlink
-rw------- 0 2018/09/05 09:18:15 file
lrwxrwxrwx 4 2018/09/05 09:18:28 near_symlink
シンボリックリンクを表します。〜する譲渡は可能ですが、そうではありません。実際に送金する場合:
~/src$ ls ~/dest
drwx------ 2 michael michael 4.0K 2018-09-05 09:39:16 .
drwxr-xr-x 30 michael michael 4.0K 2018-09-05 09:44:49 ..
~/src$ rsync -r --no-links ./ ~/dest
skipping non-regular file "far_symlink"
skipping non-regular file "near_symlink"
~/src$ ls ~/dest
drwxr-xr-x 30 michael michael 4.0K 2018-09-05 09:44:49 ..
-rw------- 1 michael michael 0 2018-09-05 09:48:10 file
drwx------ 2 michael michael 4.0K 2018-09-05 09:48:10 .
シンボリックリンクは送信されませんでした。
だからそれは不正直なようです--list-only
。実際に転送されるファイルのリストを取得する方法はありますか(リモートSSHサーバーなどに接続する必要なしに)?私は何を見逃していますか?
Ubuntu 18.04を使用しています。他の細部:
$ uname -a
Linux ubuntu 4.15.0-33-generic #36-Ubuntu SMP Wed Aug 15 16:00:05 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
$ rsync --version
rsync version 3.1.2 protocol version 31
Capabilities:
64-bit files, 64-bit inums, 64-bit timestamps, 64-bit long ints,
socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace,
append, ACLs, xattrs, iconv, symtimes, prealloc
更新:私の間違った用語を許してください。私候補者譲渡して何〜する譲渡されました。私の質問は、なぜシンボリックリンクが考慮されるのかです。候補者送信(したがってリスト--list-only
)されますが、目的地の条件に関係なく明確に送信されず(私の意見では)明示的に除外されますno-links
。
答え1
この--list-only
オプションはファイルを認識しません〜する転送されたファイルのみを認識します。候補者移転するために。ここから見ることができます。
touch aa bb cc; ln -s cc dd
rsync --list-only --no-links -a ?? /tmp
rsync -av ?? /tmp
rsync --list-only --no-links -a ?? /tmp
最終出力rsync
-rw-r--r-- 0 2018/09/05 16:35:01 aa
-rw-r--r-- 0 2018/09/05 16:35:01 bb
-rw-r--r-- 0 2018/09/05 16:35:01 cc
lrwxrwxrwx 2 2018/09/05 16:35:01 dd -> cc
rsync
ファイルが転送され、ソースで変更されていないままの最後のファイルを検討してください。--list-only
転送するファイルを表示しても何も表示されません。ただし、考慮すべきソースファイルのセットはまだ表示されます。
レポートするファイルセットを管理するためにターゲットのコンテキストを使用するには、次のようにします。--dry-run --info=name
rsync --dry-run --info=name --archive --no-links ?? /tmp
または、生成されたものと同様の出力が必要な場合--list-only
(具体的には、最初の文字の項目タイプを省略)
rsync --dry-run --info=name --out-format='%B%16l %t %f' --archive --no-links ?? /tmp
初期出力
skipping non-regular file "dd"
rw-r--r-- 0 2018/09/05 16:42:30 aa
rw-r--r-- 0 2018/09/05 16:42:30 bb
rw-r--r-- 0 2018/09/05 16:42:30 cc
ファイルコピー後の後続出力
skipping non-regular file "dd"