rsync --list-only output not as expected

The name of the pictureThe name of the pictureThe name of the pictureClash Royale CLAN TAG#URR8PPP











up vote
2
down vote

favorite












The rsync option --list-only appears to give output that isn't quite right. Here are my test files:



~/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


I want a list of files that will be transferred, and I don't want symlinks, so I run this with --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


It indicates the symlinks will be transferred, but this is not the case. If I actually do the transfer:



~/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 .


The symlinks aren't sent.



So it feels like --list-only is not being truthful. Is there some way to get a list (without having to make contact with e.g. a remote ssh server) as to which files are actually to be transferred? What am I missing?



I'm on Ubuntu 18.04. Other details:



$ 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


UPDATE: Please excuse my poor terminology. I understand the difference between what is a candidate to transfer vs. what will be transferred. My question is why are symlinks considered a candidate to transfer (and thereby being listed by--list-only) when they will obviously not be transferred regardless of the condition of the destination and they are (I thought) being explicitly excluded by no-links.










share|improve this question



























    up vote
    2
    down vote

    favorite












    The rsync option --list-only appears to give output that isn't quite right. Here are my test files:



    ~/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


    I want a list of files that will be transferred, and I don't want symlinks, so I run this with --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


    It indicates the symlinks will be transferred, but this is not the case. If I actually do the transfer:



    ~/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 .


    The symlinks aren't sent.



    So it feels like --list-only is not being truthful. Is there some way to get a list (without having to make contact with e.g. a remote ssh server) as to which files are actually to be transferred? What am I missing?



    I'm on Ubuntu 18.04. Other details:



    $ 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


    UPDATE: Please excuse my poor terminology. I understand the difference between what is a candidate to transfer vs. what will be transferred. My question is why are symlinks considered a candidate to transfer (and thereby being listed by--list-only) when they will obviously not be transferred regardless of the condition of the destination and they are (I thought) being explicitly excluded by no-links.










    share|improve this question

























      up vote
      2
      down vote

      favorite









      up vote
      2
      down vote

      favorite











      The rsync option --list-only appears to give output that isn't quite right. Here are my test files:



      ~/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


      I want a list of files that will be transferred, and I don't want symlinks, so I run this with --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


      It indicates the symlinks will be transferred, but this is not the case. If I actually do the transfer:



      ~/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 .


      The symlinks aren't sent.



      So it feels like --list-only is not being truthful. Is there some way to get a list (without having to make contact with e.g. a remote ssh server) as to which files are actually to be transferred? What am I missing?



      I'm on Ubuntu 18.04. Other details:



      $ 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


      UPDATE: Please excuse my poor terminology. I understand the difference between what is a candidate to transfer vs. what will be transferred. My question is why are symlinks considered a candidate to transfer (and thereby being listed by--list-only) when they will obviously not be transferred regardless of the condition of the destination and they are (I thought) being explicitly excluded by no-links.










      share|improve this question















      The rsync option --list-only appears to give output that isn't quite right. Here are my test files:



      ~/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


      I want a list of files that will be transferred, and I don't want symlinks, so I run this with --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


      It indicates the symlinks will be transferred, but this is not the case. If I actually do the transfer:



      ~/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 .


      The symlinks aren't sent.



      So it feels like --list-only is not being truthful. Is there some way to get a list (without having to make contact with e.g. a remote ssh server) as to which files are actually to be transferred? What am I missing?



      I'm on Ubuntu 18.04. Other details:



      $ 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


      UPDATE: Please excuse my poor terminology. I understand the difference between what is a candidate to transfer vs. what will be transferred. My question is why are symlinks considered a candidate to transfer (and thereby being listed by--list-only) when they will obviously not be transferred regardless of the condition of the destination and they are (I thought) being explicitly excluded by no-links.







      rsync






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Sep 15 at 16:05









      Rui F Ribeiro

      36.8k1273117




      36.8k1273117










      asked Sep 5 at 15:10









      Michael

      112




      112




















          1 Answer
          1






          active

          oldest

          votes

















          up vote
          1
          down vote













          The --list-only option does not identify the files that will be transferred; it only identifies the files that are candidates for being transferred. You can see this here



          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


          Output from last 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


          Consider the last rsync, where the files have already been transferred and remain unchanged on the source. If --list-only were to show files that needed to be transferred, nothing would be listed. However, it still shows the set of source files that need to be considered.



          If you want to use context of the target to manage the set of files to be reported, use --dry-run --info=name



          rsync --dry-run --info=name --archive --no-links ?? /tmp


          Or, if you want a similar output to that produced by --list-only (notably omitting the entry type from the first character)



          rsync --dry-run --info=name --out-format='%B%16l %t %f' --archive --no-links ?? /tmp


          Initial output



          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


          Subsequent output, once the files have been copied



          skipping non-regular file "dd"





          share|improve this answer




















          • Thanks. I understand the diff between what will be transferred vs what is a candidate/considered to transfer. So why are symlinks considered candidates when they clearly are not to be transferred regardless of the condition of the destination? What am I missing?
            – Michael
            Sep 5 at 15:56











          • Mmm. A quick check with --exclude bb shows that this is excluded from consideration by --list-only, so maybe the behaviour you're seeing is a bug.
            – roaima
            Sep 5 at 16:05











          Your Answer







          StackExchange.ready(function()
          var channelOptions =
          tags: "".split(" "),
          id: "106"
          ;
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function()
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled)
          StackExchange.using("snippets", function()
          createEditor();
          );

          else
          createEditor();

          );

          function createEditor()
          StackExchange.prepareEditor(
          heartbeatType: 'answer',
          convertImagesToLinks: false,
          noModals: false,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: null,
          bindNavPrevention: true,
          postfix: "",
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          );



          );













           

          draft saved


          draft discarded


















          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f467044%2frsync-list-only-output-not-as-expected%23new-answer', 'question_page');

          );

          Post as a guest






























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes








          up vote
          1
          down vote













          The --list-only option does not identify the files that will be transferred; it only identifies the files that are candidates for being transferred. You can see this here



          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


          Output from last 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


          Consider the last rsync, where the files have already been transferred and remain unchanged on the source. If --list-only were to show files that needed to be transferred, nothing would be listed. However, it still shows the set of source files that need to be considered.



          If you want to use context of the target to manage the set of files to be reported, use --dry-run --info=name



          rsync --dry-run --info=name --archive --no-links ?? /tmp


          Or, if you want a similar output to that produced by --list-only (notably omitting the entry type from the first character)



          rsync --dry-run --info=name --out-format='%B%16l %t %f' --archive --no-links ?? /tmp


          Initial output



          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


          Subsequent output, once the files have been copied



          skipping non-regular file "dd"





          share|improve this answer




















          • Thanks. I understand the diff between what will be transferred vs what is a candidate/considered to transfer. So why are symlinks considered candidates when they clearly are not to be transferred regardless of the condition of the destination? What am I missing?
            – Michael
            Sep 5 at 15:56











          • Mmm. A quick check with --exclude bb shows that this is excluded from consideration by --list-only, so maybe the behaviour you're seeing is a bug.
            – roaima
            Sep 5 at 16:05















          up vote
          1
          down vote













          The --list-only option does not identify the files that will be transferred; it only identifies the files that are candidates for being transferred. You can see this here



          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


          Output from last 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


          Consider the last rsync, where the files have already been transferred and remain unchanged on the source. If --list-only were to show files that needed to be transferred, nothing would be listed. However, it still shows the set of source files that need to be considered.



          If you want to use context of the target to manage the set of files to be reported, use --dry-run --info=name



          rsync --dry-run --info=name --archive --no-links ?? /tmp


          Or, if you want a similar output to that produced by --list-only (notably omitting the entry type from the first character)



          rsync --dry-run --info=name --out-format='%B%16l %t %f' --archive --no-links ?? /tmp


          Initial output



          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


          Subsequent output, once the files have been copied



          skipping non-regular file "dd"





          share|improve this answer




















          • Thanks. I understand the diff between what will be transferred vs what is a candidate/considered to transfer. So why are symlinks considered candidates when they clearly are not to be transferred regardless of the condition of the destination? What am I missing?
            – Michael
            Sep 5 at 15:56











          • Mmm. A quick check with --exclude bb shows that this is excluded from consideration by --list-only, so maybe the behaviour you're seeing is a bug.
            – roaima
            Sep 5 at 16:05













          up vote
          1
          down vote










          up vote
          1
          down vote









          The --list-only option does not identify the files that will be transferred; it only identifies the files that are candidates for being transferred. You can see this here



          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


          Output from last 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


          Consider the last rsync, where the files have already been transferred and remain unchanged on the source. If --list-only were to show files that needed to be transferred, nothing would be listed. However, it still shows the set of source files that need to be considered.



          If you want to use context of the target to manage the set of files to be reported, use --dry-run --info=name



          rsync --dry-run --info=name --archive --no-links ?? /tmp


          Or, if you want a similar output to that produced by --list-only (notably omitting the entry type from the first character)



          rsync --dry-run --info=name --out-format='%B%16l %t %f' --archive --no-links ?? /tmp


          Initial output



          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


          Subsequent output, once the files have been copied



          skipping non-regular file "dd"





          share|improve this answer












          The --list-only option does not identify the files that will be transferred; it only identifies the files that are candidates for being transferred. You can see this here



          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


          Output from last 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


          Consider the last rsync, where the files have already been transferred and remain unchanged on the source. If --list-only were to show files that needed to be transferred, nothing would be listed. However, it still shows the set of source files that need to be considered.



          If you want to use context of the target to manage the set of files to be reported, use --dry-run --info=name



          rsync --dry-run --info=name --archive --no-links ?? /tmp


          Or, if you want a similar output to that produced by --list-only (notably omitting the entry type from the first character)



          rsync --dry-run --info=name --out-format='%B%16l %t %f' --archive --no-links ?? /tmp


          Initial output



          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


          Subsequent output, once the files have been copied



          skipping non-regular file "dd"






          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Sep 5 at 15:47









          roaima

          40.6k547110




          40.6k547110











          • Thanks. I understand the diff between what will be transferred vs what is a candidate/considered to transfer. So why are symlinks considered candidates when they clearly are not to be transferred regardless of the condition of the destination? What am I missing?
            – Michael
            Sep 5 at 15:56











          • Mmm. A quick check with --exclude bb shows that this is excluded from consideration by --list-only, so maybe the behaviour you're seeing is a bug.
            – roaima
            Sep 5 at 16:05

















          • Thanks. I understand the diff between what will be transferred vs what is a candidate/considered to transfer. So why are symlinks considered candidates when they clearly are not to be transferred regardless of the condition of the destination? What am I missing?
            – Michael
            Sep 5 at 15:56











          • Mmm. A quick check with --exclude bb shows that this is excluded from consideration by --list-only, so maybe the behaviour you're seeing is a bug.
            – roaima
            Sep 5 at 16:05
















          Thanks. I understand the diff between what will be transferred vs what is a candidate/considered to transfer. So why are symlinks considered candidates when they clearly are not to be transferred regardless of the condition of the destination? What am I missing?
          – Michael
          Sep 5 at 15:56





          Thanks. I understand the diff between what will be transferred vs what is a candidate/considered to transfer. So why are symlinks considered candidates when they clearly are not to be transferred regardless of the condition of the destination? What am I missing?
          – Michael
          Sep 5 at 15:56













          Mmm. A quick check with --exclude bb shows that this is excluded from consideration by --list-only, so maybe the behaviour you're seeing is a bug.
          – roaima
          Sep 5 at 16:05





          Mmm. A quick check with --exclude bb shows that this is excluded from consideration by --list-only, so maybe the behaviour you're seeing is a bug.
          – roaima
          Sep 5 at 16:05


















           

          draft saved


          draft discarded















































           


          draft saved


          draft discarded














          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f467044%2frsync-list-only-output-not-as-expected%23new-answer', 'question_page');

          );

          Post as a guest













































































          Popular posts from this blog

          How to check contact read email or not when send email to Individual?

          Displaying single band from multi-band raster using QGIS

          How many registers does an x86_64 CPU actually have?