Example:
rsync /tmp/fol1/fol2/fol3/foln user@addr:/tmp/fol1/fol2/fol3/foln
My main problem is folder /tmp/fol1 doesn't exist on remote machine.
Which arguments can I use to force rsync to create this tree?
Example:
rsync /tmp/fol1/fol2/fol3/foln user@addr:/tmp/fol1/fol2/fol3/foln
My main problem is folder /tmp/fol1 doesn't exist on remote machine.
Which arguments can I use to force rsync to create this tree?
I ran into same issue today and found the solution here.
You can either do:
rsync -avR foo/bar/baz.c remote:/tmp/
or:
rsync -avR somedir/./foo/bar/baz.c remote:/tmp/
to create /tmp/foo/bar/baz.c in the remote machine.
see --relative/-R
section of man rsync
for more details.
One trick to do it is to use the --rsync-path
parameter with the following value:
--rsync-path="mkdir -p /tmp/fol1 && rsync"
With --rsync-path you can specify what program is going to be used to start rsync in the remote machine and is run with the help of a shell.
You can do this via bash and open a ssh tunnel make the file structure you need to make then rsync the data. Will these temp folders change each time this sync is done? eg is it for each day of the week?
ssh user@address
mkdir -p tmp/fol1
rsync avz /tmp/fol1/fol2/fol3/foln user@addr:/tmp/fol1/fol2/fol3/foln
fi
rysnc version 3.2.3 (6 Aug 2020) added the --mkpath
option which achieves this purpose.
man rsync
documents:
--mkpath create the destination's path component
Ubuntu 22.04 is the first Ubuntu version that will get this option as per: https://packages.ubuntu.com/search?keywords=rsync&searchon=names&suite=jammy§ion=all
This had been previously mentioned in another answer to this question which got deleted, also mentioned at: rsync - create all missing parent directories?