RSYNC syntax for pushing file with latest system date

OK, I am a little new to AIX 5.3 and also to scripting. I have a shell script that I wrote and am having difficulty pushing specific files by the system date. Here is my script:

#!/usr/bin/sh

RSYNC=/usr/local/bin/rsync
SSH=/usr/local/bin/ssh
KEY=<path> somekey.key
RUSER=mike
RHOST=bulldog
RPATH=<path> sync_test (this is the line for the file to be moved to)
LPATH=<path> (this is the line where the file is moving from) 

$RSYNC -arpe "$SSH -i $KEY" $LPATH $RUSER@$RHOST:$RPATH

For security reasons I removed the paths and certain file names

I am thinking there is either a seperate line for the date information or the date is at the end of the line from LPATH.

Any help would be much appreciative!!

-Thanks

I'm not sure I understood the objective.

  • Do you want to push only files that have been updated?
    You're already doing this with --archive..since it assumes --times. So only those files that are newer than the destination will copy. Keep in mind to check the time of your boxes (ntp a huge plus here)

  • Do you want only push files that have updated in a timeframe you choose?
    If you're wanting to do something that only sends files that have been updated in a timeframe which you set, you might want to consider a staging script to analyze which files you need to send...thn use rsync to send them.

  • Maybe I'm way off?

Thanks!
J

On our production server everyday, "1" file will be generated and stored in the starting directory. Now I have to find a way to move the newest file (by date) to be pushed to the DEVL server. Remind you I have to keep all other files in the same directory. So, I figure by "date" or "system date" rysnc will know to move that particular file.

Does this help?

I am looking for the syntax to complete this task

-thanks

If I understand correctly I think you're pretty much there. You might want to remove the -e from your rsync which would prevent files from being updated if they did not already exist. You can also drop the -pr from your options..it is redundant. Using -a assumes (-rlptgoD).

So try just:
rsync -a </source/dir/> </desintation/dir/>

Here is an example on how I can keep a dev server in synch with the production. Notice I have 3 files in 3 directories in my "source" for testing. I'm using the same server...but that does not matter here.

jnetnix@nix:/tmp/Testing$ find ./Srcfiles/ -type f -exec ls -l {} \;
-rw-r--r-- 1 jnetnix jnetnix 0 2009-08-11 13:20 ./Srcfiles/dir1/file1
-rw-r--r-- 1 jnetnix jnetnix 0 2009-08-11 13:20 ./Srcfiles/dir1/file2
-rw-r--r-- 1 jnetnix jnetnix 0 2009-08-11 13:20 ./Srcfiles/dir1/file3
-rw-r--r-- 1 jnetnix jnetnix 0 2009-08-11 13:20 ./Srcfiles/dir2/file1
-rw-r--r-- 1 jnetnix jnetnix 0 2009-08-11 13:20 ./Srcfiles/dir2/file2
-rw-r--r-- 1 jnetnix jnetnix 0 2009-08-11 13:20 ./Srcfiles/dir2/file3
-rw-r--r-- 1 jnetnix jnetnix 0 2009-08-11 13:20 ./Srcfiles/dir3/file1
-rw-r--r-- 1 jnetnix jnetnix 0 2009-08-11 13:20 ./Srcfiles/dir3/file2
-rw-r--r-- 1 jnetnix jnetnix 0 2009-08-11 13:20 ./Srcfiles/dir3/file3
jnetnix@nix:/tmp/Testing$ find ./DevFiles/ -type f -exec ls -l {} \;
jnetnix@nix:/tmp/Testing$ 

I run rsync, in recursive mode and enable --verbose and --stats for testing.

jnetnix@nix$ rsync -a \
  --verbose --stats \
  /tmp/Testing/Srcfiles/ localhost:/tmp/Testing/DevFiles/
jnetnix@localhost's password: 
sending incremental file list
./
dir1/
dir1/file1
dir1/file2
dir1/file3
dir2/
dir2/file1
dir2/file2
dir2/file3
dir3/
dir3/file1
dir3/file2
dir3/file3

Number of files: 13
Number of files transferred: 9
Total file size: 0 bytes
Total transferred file size: 0 bytes
Literal data: 0 bytes
Matched data: 0 bytes
File list size: 197
File list generation time: 0.001 seconds
File list transfer time: 0.000 seconds
Total bytes sent: 576
Total bytes received: 198

sent 576 bytes  received 198 bytes  172.00 bytes/sec
total size is 0  speedup is 0.00

I can now see that my Src and Dev are mirrored.

jnetnix@nix:/tmp/Testing$ find ./Srcfiles/ -type f -exec ls -l {} \;
-rw-r--r-- 1 jnetnix jnetnix 0 2009-08-11 13:20 ./Srcfiles/dir1/file1
-rw-r--r-- 1 jnetnix jnetnix 0 2009-08-11 13:20 ./Srcfiles/dir1/file2
-rw-r--r-- 1 jnetnix jnetnix 0 2009-08-11 13:20 ./Srcfiles/dir1/file3
-rw-r--r-- 1 jnetnix jnetnix 0 2009-08-11 13:20 ./Srcfiles/dir2/file1
-rw-r--r-- 1 jnetnix jnetnix 0 2009-08-11 13:20 ./Srcfiles/dir2/file2
-rw-r--r-- 1 jnetnix jnetnix 0 2009-08-11 13:20 ./Srcfiles/dir2/file3
-rw-r--r-- 1 jnetnix jnetnix 0 2009-08-11 13:20 ./Srcfiles/dir3/file1
-rw-r--r-- 1 jnetnix jnetnix 0 2009-08-11 13:20 ./Srcfiles/dir3/file2
-rw-r--r-- 1 jnetnix jnetnix 0 2009-08-11 13:20 ./Srcfiles/dir3/file3
jnetnix@nix:/tmp/Testing$ find ./DevFiles/ -type f -exec ls -l {} \;
-rw-r--r-- 1 jnetnix jnetnix 0 2009-08-11 13:20 ./DevFiles/dir1/file1
-rw-r--r-- 1 jnetnix jnetnix 0 2009-08-11 13:20 ./DevFiles/dir1/file2
-rw-r--r-- 1 jnetnix jnetnix 0 2009-08-11 13:20 ./DevFiles/dir1/file3
-rw-r--r-- 1 jnetnix jnetnix 0 2009-08-11 13:20 ./DevFiles/dir2/file1
-rw-r--r-- 1 jnetnix jnetnix 0 2009-08-11 13:20 ./DevFiles/dir2/file2
-rw-r--r-- 1 jnetnix jnetnix 0 2009-08-11 13:20 ./DevFiles/dir2/file3
-rw-r--r-- 1 jnetnix jnetnix 0 2009-08-11 13:20 ./DevFiles/dir3/file1
-rw-r--r-- 1 jnetnix jnetnix 0 2009-08-11 13:20 ./DevFiles/dir3/file2
-rw-r--r-- 1 jnetnix jnetnix 0 2009-08-11 13:20 ./DevFiles/dir3/file3

I can re-run rsync all day long and nothing that is not new will transfer. you could even cron this part once an hour or so.

jnetnix@nix:/tmp/Testing$ rsync -a \
  --verbose --stats \
  /tmp/Testing/Srcfiles/ localhost:/tmp/Testing/DevFiles/
jnetnix@localhost's password: 
sending incremental file list

Number of files: 13
Number of files transferred: 0
Total file size: 0 bytes
Total transferred file size: 0 bytes
Literal data: 0 bytes
Matched data: 0 bytes
File list size: 197
File list generation time: 0.001 seconds
File list transfer time: 0.000 seconds
Total bytes sent: 213
Total bytes received: 15

sent 213 bytes  received 15 bytes  65.14 bytes/sec
total size is 0  speedup is 0.00

If I update a file, or two, they will be the only ones sent to the destination.

jnetnix@nix:/tmp/Testing$ touch ./Srcfiles/dir1/file4
jnetnix@nix:/tmp/Testing$ touch ./Srcfiles/dir2/file4
jnetnix@nix:/tmp/Testing$ rsync -a \
  --verbose --stats \
  /tmp/Testing/Srcfiles/ localhost:/tmp/Testing/DevFiles/
jnetnix@localhost's password: 
sending incremental file list
dir1/
dir1/file4
dir2/
dir2/file4

Number of files: 15
Number of files transferred: 2
Total file size: 0 bytes
Total transferred file size: 0 bytes
Literal data: 0 bytes
Matched data: 0 bytes
File list size: 219
File list generation time: 0.001 seconds
File list transfer time: 0.000 seconds
Total bytes sent: 319
Total bytes received: 59

sent 319 bytes  received 59 bytes  108.00 bytes/sec
total size is 0  speedup is 0.00
jnetnix@nix:/tmp/Testing$ 

Hope it helps...good luck!
-J

Thanks for all that information. I now have a better understanding how RSYNC works. I was able to complete my task.

Thank you!