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 <jose...@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.               ke...@futurequest.net  (work)
        Orlando, Florida                k...@sanitarium.net (personal)
        Web page:                       http://www.sanitarium.net/
        PGP public key available on web site.
~*-,._.,-*~'`^`'~*-,._.,-*~'`^`'~*-,._.,-*~'`^`'~*-,._.,-*~'`^`'~*-,._.,

Attachment: signature.asc
Description: OpenPGP digital signature

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

Reply via email to