Output of --list-only not as I expected for symlinks

Kevin Korb kmk at sanitarium.net
Thu Sep 13 03:57:17 UTC 2018


Then that just leaves --dry-run.  More flexibility you might not know:
If you double --itemize-changes it will show all the files it considers
including what it skips for being the same.
If you double -v you will get debugging for include/exclude rules.

On 09/12/2018 10:26 PM, Michael Hipp via rsync wrote:
> My apologies. I'm evidently not communicating very well.
> 
> I am not asking for a list of what "needs to be transferred", I am
> looking for a list of those things that are "candidates to transfer". In
> other words, the source items minus exclusions/filters or anything else
> that will be ignored (by rsync).
> 
> Is there any option for rsync that offers such a list?
> 
>> find /path -type f -or -type d -print  (or -ls)
> 
> This tells me nothing about what *rsync* expects to do. In particular it
> won't consider rsync's filters/exclusions.
> 
> Thanks,
> Michael
> 
> On 2018-09-12 20:54, Kevin Korb via rsync wrote:
>> How would it know what needs to be transferred without looking at both
>> source and target?  You are correct that it doesn't pay any attention to
>> the target because it doesn't need a target.  If the source is remote
>> then it will connect to the remote to do a remote listing and if the
>> source is local then no connection is needed but then neither is rsync.
>> As far as obeying the recursive flag, so does ls.
>>
>> I didn't know it cared about exclude rules but you are right that it
>> does.  Guess I never tried.  I only ever used it when I was trying to
>> see what was on an rsync server.
>>
>> Anyway, if you want to list all the files and dirs but not symlinks and
>> others in a local tree:
>> find /path -type f -or -type d -print  (or -ls)
>>
>> On 09/12/2018 07:53 PM, Michael Hipp via rsync wrote:
>>> Thank you. But I'm afraid I don't understand. The man entry reads:
>>>
>>> "--list-only
>>>      This option will cause the source files to be listed instead of
>>> transferred. This option is inferred if there is a single source arg and
>>> no destination specified..."
>>>
>>> It doesn't say anything about "list remote files". In fact I am not sure
>>> why it would even contact the remote end. And the behavior does not
>>> change even if no destination is specified.
>>>
>>> As far as it ignoring the rest of the command line, note that it does
>>> obey exclusion rules. Symlinks seem to be the only anomaly in its
>>> output.
>>>
>>> I use --dry-run and --itemize-changes frequently. But I was trying to
>>> find something that would give me a correct list of the candidate source
>>> files but without having to make an expensive connect to the remote
>>> server. Any suggestions?
>>>
>>> Thanks,
>>> Michael Hipp
>>>
>>>
>>>
>>> On 2018-09-12 11:17, Kevin Korb via rsync wrote:
>>>> --list-only is simply a way to list remote files when you only have
>>>> access via rsync.  It ignores the rest of the command line.  You want
>>>> --dry-run (--itemize-changes would be a good idea too).
>>>>
>>>> On 09/12/2018 11:06 AM, Michael Hipp via rsync wrote:
>>>>> The output of --list-only isn't as I expected as regards symlinks.
>>>>> Here
>>>>> are my test files:
>>>>>
>>>>> $ ls ./src
>>>>> -rw-------  1 michael michael    0 2018-09-05 09:18:15 file
>>>>> lrwxrwxrwx  1 michael michael    4 2018-09-05 09:18:28 near_symlink
>>>>> -> file
>>>>> lrwxrwxrwx  1 michael michael   23 2018-09-05 09:19:05 far_symlink ->
>>>>> /home/michael/Documents
>>>>>
>>>>> The "destination" dir is empty:
>>>>>
>>>>> $ ls ./dest
>>>>> drwxr-xr-x 31 michael michael 4.0K 2018-09-12 09:46:06 ..
>>>>> drwx------  2 michael michael 4.0K 2018-09-12 09:50:20 .
>>>>>
>>>>> I want to know which files are candidates to transfer. I don't want
>>>>> symlinks to transfer. So I run it with --list-only :
>>>>>
>>>>> $ rsync -r --no-links --list-only ./src/ ./dest
>>>>> drwx------          4,096 2018/09/06 09:39:16 .
>>>>> 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
>>>>>
>>>>> This seems to indicate the symlinks are expected to transfer. But if I
>>>>> actually run the transfer by removing --list-only ...
>>>>>
>>>>> $ rsync -r --no-links ./src/ ./dest
>>>>> skipping non-regular file "far_symlink"
>>>>> skipping non-regular file "near_symlink"
>>>>>
>>>>> It does not transfer the symlinks and this is confirmed by the
>>>>> contents
>>>>> of dest:
>>>>>
>>>>> $ ls ./dest
>>>>> drwxr-xr-x 31 michael michael 4.0K 2018-09-12 09:46:06 ..
>>>>> -rw-------  1 michael michael    0 2018-09-12 09:57:50 file
>>>>> drwx------  2 michael michael 4.0K 2018-09-12 09:57:50 .
>>>>>
>>>>> So it seems like --list-only isn't being truthful as it surely knows
>>>>> beforehand the symlinks will not be transferred regardless of the
>>>>> condition of dest.
>>>>>
>>>>> What am I missing?
>>>>>
>>>>> Thanks,
>>>>> Michael Hipp
>>>>>
>>>>>
>>>>
>>>>
>>>
>>>
>>
>>
> 
> 

-- 
~*-,._.,-*~'`^`'~*-,._.,-*~'`^`'~*-,._.,-*~'`^`'~*-,._.,-*~'`^`'~*-,._.,
	Kevin Korb			Phone:    (407) 252-6853
	Systems Administrator		Internet:
	FutureQuest, Inc.		Kevin at FutureQuest.net  (work)
	Orlando, Florida		kmk at sanitarium.net (personal)
	Web page:			https://sanitarium.net/
	PGP public key available on web site.
~*-,._.,-*~'`^`'~*-,._.,-*~'`^`'~*-,._.,-*~'`^`'~*-,._.,-*~'`^`'~*-,._.,

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 195 bytes
Desc: OpenPGP digital signature
URL: <http://lists.samba.org/pipermail/rsync/attachments/20180912/cf4dfb64/signature.sig>


More information about the rsync mailing list