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. ~*-,._.,-*~'`^`'~*-,._.,-*~'`^`'~*-,._.,-*~'`^`'~*-,._.,-*~'`^`'~*-,._.,
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