rsync --list-only 出力が予想と異なる

rsync --list-only 出力が予想と異なる

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"

関連情報