Take2: rsync over ssh with --link-dest
Alex
mysqlstudent at gmail.com
Tue Nov 10 20:47:10 MST 2009
Hi,
>> Simplicity. I'd like to be able to have the server side feed me all
>> data beginning with the path I specify, such /backup/serverA,
>
> In other words, you were specifying a bogus source path and counting on
> sshd to override it with the real one. Clever. I didn't catch that the
> first time.
Yes, not sure if I mentioned previously, but I had:
command="/usr/bin/rsync ... -server ... /path"
followed by the actual ssh key.
> Realize that the ability to set a module's "path" in the rsyncd.conf
> file and have the client refer to the module by a well-known name gives
> you the same functionality, and actually more, because the client can
> specify a subdirectory path within the module.
I'm not sure I understand fully, but this may be what I'm already
doing. An example would be helpful.
>> and have
>> the client side be able to "--include=/usr/bin" to be able to
>> 'download' only the data from /backup/serverA/usr/bin and exclude
>> everything else.
>
> That --include means "exclude everything else" is a common
> misconception; see the man page. But I imagine the issue will become
Yes, understood; it is what I would _like_ to happen.
> If the daemon solution is looking fundamentally more complicated than
> the set of forced server commands you previously had, you're probably
> going about it the wrong way and I could help if you post the
> rsyncd.conf file.
Okay, great, it's included below.
To make it even more complicated, on the receiving (client) side, I
have to pass the backup script I use through sed to rewrite the date
which gets appended to the source path, to update every day so I can
use the --link-dest rsync argument to create a backup of only the
changes from day-to-day, and hard link the rest from the reference
location, which is usually the previous day.
use chroot = no
syslog facility = local5
[cdrive]
list = true
path = /backup/servers/xxx.xxx.228/cdrive
comment = 228-cdrive
read only = true
gid = root
uid = root
[ddrive]
list = true
path = /backup/servers/xxx.xxx.228/ddrive
comment = 228-ddrive
read only = true
gid = root
uid = root
[edrive]
list = true
path = /backup/servers/xxx.xxx.228/edrive
comment = 228-edrive
read only = true
gid = root
uid = root
[229]
list = true
path = /backup/servers/xxx.xxx.229/
comment = server229
read only = true
gid = root
uid = root
[249]
list = true
path = /backup/servers/xxx.xxx.249/
comment = server249
read only = true
gid = root
uid = root
The client side command looks something like this:
rsync -avz --delete --numeric-ids --exclude-from=/backup/exclude-file.txt \
--link-dest=/backup/seg/serverA/xxx.xxx.228/cdrive/20091109 \
rsync://serverA/cdrive/20091110/ \
/backup/seg/serverA/xxx.xxx.228/cdrive/20091110
Thanks,
Alex
More information about the rsync
mailing list