HI, I'm trying to have files to be included during rsync. I have the filesystem /stor/circuit_design/, with the following subdirectories as its contents: clock_speed fub_layout test_simulations pattern_flow I would only like to rsync the following 2 subdirectories to the destination machine: clock_speed fub_layout and they're contained in the file called files_included: # cat files_included clock_speed fub_layout Hence, I invoked rsync as below: # rsync -avz --include-from=files_included /stor/circuit_design/ mickey.willowglen.com:/stor/circuit_design/ However, after rsync is invoked, the other sub-directories i.e test_simulations and pattern_flow were also included in the destination filesystem. I've tried with the following pattern combinations in the file files_included: *clock_speed* *fub_layout* AND /clock_speed /fub_layout AND /stor/circuit_design/clock_speed /stor/circuit_design/fub_layout AND FINALLY circuit_design/clock_speed circuit_design/fub_layout All other 4 methods did not produced the desired result. Could someone tell me what is the proper way in including the patterns for the --include-from option? Thanks.
On Mon, 12 Aug 2002, Leaw, Chern Jian wrote:> # rsync -avz --include-from=files_included /stor/circuit_design/ > mickey.willowglen.com:/stor/circuit_design/The problem with your command is that it contains include directives but no exclusions, so nothing limits the default operation of sending the entire subdirectory contents. An easier way to go for this specific problem is to ignore includes and specify two source dirs, like this: rsync -avz /stor/circuit_design/{clock_speed,fub_layout} mickey.willowglen.com:/stor/circuit_design/ The above assumes your shell has {} expansion, like bash and zsh. If it does not, just mention both directories separately (without any trailing slash). The trailing slash on the destination isn't required, but it doesn't hurt either, so I left it in. To make things work with your include-using command, you'd need to use something like this in your include file: + /clock_speed + /fub_layout - /* This allows the two directories you want, and excludes everything else in the base directory of the transfer. Since none of the rules apply to files deeper than the base dir, none of them will be excluded. ..wayne..
Hi Wayne, I tried your suggestion, but did not work. It still copied the entire filesystem across to the destination machine. I tried having the following: + /*/clock_speed + /*/fub_layout - /* AND + circuit_design/clock_speed + circuit_design/fub_layout - /* AND + /stor/circuit_design/clock_speed + /stor/circuit_design/fub_layout - /* Could you explain to me the idea of having the +, -, and /* ? Do the number of /* indicate the subdirectory levels before arriving at the directory to include? The other alternative you suggested below works well: rsync -avz /stor/circuit_design/{clock_speed,fub_layout} mickey.willowglen.com:/stor/circuit_design/ But I would like to have these include list into a file, as I'd be having many other sub-directories to include, yet exclude. Appreciate it if you could help me out. Thanks. -----Original Message----- From: Wayne Davison [mailto:wayned@users.sourceforge.net] Sent: Tuesday, August 13, 2002 12:57 AM To: Leaw, Chern Jian Cc: 'rsync@lists.samba.org' Subject: Re: --include option On Mon, 12 Aug 2002, Leaw, Chern Jian wrote:> # rsync -avz --include-from=files_included /stor/circuit_design/ > mickey.willowglen.com:/stor/circuit_design/The problem with your command is that it contains include directives but no exclusions, so nothing limits the default operation of sending the entire subdirectory contents. An easier way to go for this specific problem is to ignore includes and specify two source dirs, like this: rsync -avz /stor/circuit_design/{clock_speed,fub_layout} mickey.willowglen.com:/stor/circuit_design/ The above assumes your shell has {} expansion, like bash and zsh. If it does not, just mention both directories separately (without any trailing slash). The trailing slash on the destination isn't required, but it doesn't hurt either, so I left it in. To make things work with your include-using command, you'd need to use something like this in your include file: + /clock_speed + /fub_layout - /* This allows the two directories you want, and excludes everything else in the base directory of the transfer. Since none of the rules apply to files deeper than the base dir, none of them will be excluded. ..wayne..
Hi Nitin, How should I include the patterns to be included for the --include-from=include_list? I've tried the method suggested from Wayne, but could not work. I've also tried having the --exclude-from=exclude-list in use together with the --include-from=include_list, but seems to me that the --exclude-from=exclude_list is doing the trick in excluding those dirs/files and hence transferring the remaining files over. This seems true when I excluded the --exclude-from=exclude-list option, and only have the --include-from=include_list specified, it ended up transferring the entire files across. I tried having the following for the file to be specified in the --include-from option:> + /*/clock_speed > + /*/fub_layout > - /* > > AND > + circuit_design/clock_speed > + circuit_design/fub_layout > - /* > > AND > + /stor/circuit_design/clock_speed > + /stor/circuit_design/fub_layout > - /* >AND> + /clock_speed > + /fub_layout > - /*Could you please help me out? Thanks. -----Original Message----- From: Nitin Agarwal [mailto:nitin.agarwal@timesgroup.com] Sent: Wednesday, August 14, 2002 3:49 PM To: Leaw, Chern Jian Cc: 'Wayne Davison'; 'rsync@lists.samba.org' Subject: Re: --include option Rather u can make two files, name the first one as includelist and second one as exclude list. Make entries of all the files u want to include in rsync in file "includelist" and entries of files to be excluded in "excludelist". then give the command: rsync -avz ...... --include-from=includelist --exclude-from=excludelist ...........rest command continues.... This will work well.. If anybody has faced any problems in doing the synchronisation this way, please let me know, so that i can be prepared for them.. :-) Nits "Leaw, Chern Jian" wrote:> Hi Wayne, > > I tried your suggestion, but did not work. It still copied the entire > filesystem across to the destination machine. > I tried having the following: > + /*/clock_speed > + /*/fub_layout > - /* > > AND > + circuit_design/clock_speed > + circuit_design/fub_layout > - /* > > AND > + /stor/circuit_design/clock_speed > + /stor/circuit_design/fub_layout > - /* > > Could you explain to me the idea of having the +, -, and /* ? Do thenumber> of /* indicate the subdirectory levels before arriving at the directory to > include? > > The other alternative you suggested below works well: > rsync -avz /stor/circuit_design/{clock_speed,fub_layout} > mickey.willowglen.com:/stor/circuit_design/ > > But I would like to have these include list into a file, as I'd be having > many other sub-directories to include, yet exclude. > > Appreciate it if you could help me out. > > Thanks. > > -----Original Message----- > From: Wayne Davison [mailto:wayned@users.sourceforge.net] > Sent: Tuesday, August 13, 2002 12:57 AM > To: Leaw, Chern Jian > Cc: 'rsync@lists.samba.org' > Subject: Re: --include option > > On Mon, 12 Aug 2002, Leaw, Chern Jian wrote: > > # rsync -avz --include-from=files_included /stor/circuit_design/ > > mickey.willowglen.com:/stor/circuit_design/ > > The problem with your command is that it contains include directives but > no exclusions, so nothing limits the default operation of sending the > entire subdirectory contents. An easier way to go for this specific > problem is to ignore includes and specify two source dirs, like this: > > rsync -avz /stor/circuit_design/{clock_speed,fub_layout} > mickey.willowglen.com:/stor/circuit_design/ > > The above assumes your shell has {} expansion, like bash and zsh. If it > does not, just mention both directories separately (without any trailing > slash). The trailing slash on the destination isn't required, but it > doesn't hurt either, so I left it in. > > To make things work with your include-using command, you'd need to use > something like this in your include file: > > + /clock_speed > + /fub_layout > - /* > > This allows the two directories you want, and excludes everything else > in the base directory of the transfer. Since none of the rules apply to > files deeper than the base dir, none of them will be excluded. > > ..wayne.. > -- > To unsubscribe or change options:http://lists.samba.org/mailman/listinfo/rsync> Before posting, read: http://www.tuxedo.org/~esr/faqs/smart-questions.html