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>