which rsync command?

Kevin Korb kmk at sanitarium.net
Thu Feb 23 16:07:16 UTC 2017


I hate to say it because it goes against my normal advice but this is
one instance where using a * in the source parameter would help...

rsync -vaiE --delete --dry-run source/* target/

This would ignore any top level directory that is on the target but not
the source while rsyncing with --delete any top level directory that is
on the source.

It is normally recommended to not use a * in the source because it
causes --delete to behave this way which is not normally desirable and
because * does not include dot files (or directories).

On 02/23/2017 10:53 AM, David Epstein wrote:
> Thanks for the helpful advice.
> 
> In view of the conflicting advice from Joe and Kevin I tried creating a couple of very small directories test1 and test2, to see what happens when the rsync command
> rsync -avi —dry-run test1/ test2/
> is given. I was pleased to see that —dry-run does explicitly say when a file is being deleted.
> Joe’s email is correct and it seems that Kevin’s version would not satisfy my third requirement.
> 
> Joe says “It depends on exactly what you want to achieve”. I think my objectives were very clearly stated, but I’m happy to clarify if necessary.
> 
> Could someone possibly elaborate on Joe’s advice, with more detail? I would be very grateful.
> On the first pass, it seems that one should just do
> rsync -avi -E SOURCE/ TARGET/
> Howevr t’s not clear to me what the rsync command should be on the second pass. I could easily generate a list of files/directories in TARGET/ that should not be deleted or changed, and put these into a file “somewhere". Then I could give an rsync command with the option —delete, but how do I protect the entries in my “somewhere” file from deletion?
> 
> thanks for any help
> David
> 
>> On 23 Feb 2017, at 01:25, Joe <josephj at main.nc.us> wrote:
>>
>> I'm probably missing something, but it looks like your first requirement rules out using --delete,
>> but your third requirement seems to imply the need for it because you want the source and target to be identical - and it won't be if there are any files on the target which are not on the source.
>>
>> If this is the case, then you may have to use more than pass - the first at the top-level without the --delete and one or more at a lower level with --delete, avoiding those top-level directories/files which do not exist on the source.
>>
>> It depends on exactly what you want to achieve.
>>
>> --dry-run is your friend.
>>
>> On 02/22/2017 10:36 AM, Kevin Korb wrote:
>>> You should be fine as long as you don't add --delete.
>>>
>>> I would start with rsync -vai --dry-run SOURCE/ TARGET/
>>> Add whatever the OSX specific option is (I think -E)
>>>
>>> Yes, --dry-run shows you what it would have done without --dry-run and
>>> yes, if you can't read all the files then you need to run it as root.
>>>
>>> On 02/22/2017 08:57 AM, David Epstein wrote:
>>>> All the files and directories I want to talk about are on the same machine (a Mac).  I have a directory that I will call SOURCE. This contains a a number of files, some of which are directories containing further files. I want to copy these files to another directory, which I will call TARGET. Please assume that SOURCE and TARGET include absolute path-names. I think they should also end in a slash (subject to correction).
>>>>
>>>> If a top-level file/directory is present in TARGET, but not in SOURCE, I do not want it to be disturbed.
>>>> If a top-level file/directory is not present in TARGET, but is present in SOURCE, I want it to be recursively copied into TARGET
>>>> If a top-level file/directory is present in TARGET and also present in SOURCE, I want it to overwrite, so that the ccorresponding file/directory in TARGET at the end of the rsync job is a copy of what is in SOURCE, with the same permissions and date-stamps.
>>>>
>>>> Since it’s on a Mac, I also want to transfer extended attributes.
>>>>
>>>> I would be grateful for the recommended recipe.
>>>>
>>>> Would dry-run tell me what rsync proposed to delete as well as what it proposed to install. It’s because I don’t understand the option dry-run fully that I’m reluctant to use trial-and-error to get to the right command.
>>>>
>>>> I think I would have to use “sudo” since some of the files are not readable by me when I am an ordinaty user.
>>>>
>>>> Thanks
>>>>
>>>>
>>>>
>>>
>>>
>>
>>
>> -- 
>> Please use reply-all for most replies to avoid omitting the mailing list.
>> To unsubscribe or change options: https://lists.samba.org/mailman/listinfo/rsync
>> Before posting, read: http://www.catb.org/~esr/faqs/smart-questions.html

-- 
~*-,._.,-*~'`^`'~*-,._.,-*~'`^`'~*-,._.,-*~'`^`'~*-,._.,-*~'`^`'~*-,._.,
	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:			http://www.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: 191 bytes
Desc: OpenPGP digital signature
URL: <http://lists.samba.org/pipermail/rsync/attachments/20170223/68d1c0c4/signature.sig>


More information about the rsync mailing list