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
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 > > >-- ~*-,._.,-*~'`^`'~*-,._.,-*~'`^`'~*-,._.,-*~'`^`'~*-,._.,-*~'`^`'~*-,._., 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/20170222/e9020d24/signature.sig>
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 >> >> >> > >