Rsync copying current directory with name
I want to copy current directory to my backup directory:
I tried this command rsync -a . ~/backup/
but it just copies the current directory contents instead of creating new directory at the destination.
I know creating new directory at the destination end can be achieved by avoiding the trailing slash in source path. But it does not work in my case since I am using a period(".") instead of directory name.
I want rsync to create a new directory at the destination path with name same as the current directory. How can I achieve this?
Solution 1:
I like your script but, if needed, you can do it by command line directly from the current directory:
rsync -a "$PWD" ~/backup/
or in a way similar to your script approach with
rsync -a "$(pwd -P)" ~/backup/
Notes:
It is needed to quote the current directory if in the path is present, for example, one or more spaces.
In case of symbolic links in the path it is possible to obtain the physical path avoiding all the symlinks specifying the option
-P
in thepwd
command invocation ($(pwd -P)
), or calling the executable with its full path ($(/bin/pwd)
).
Indeed there exists the built-inpwd
that by default shows the symlinked path, and the executable/bin/pwd
that by default shows the physical path.-
Both commands refer to the variable
$PWD
that contains the the present working directory when they are asked for the version of the path with the eventual symlinks: so if you do not strictly need the physical path, you can avoid to call the subshell and use directly the variable$PWD
.rsync -a "$PWD" ~/backup/
Solution 2:
Found a solution:
Created a new shell script like this:
current_dir=`pwd`
dir_name=`basename $current_dir`
rsync -a . ~/backup/$dir_name
and when executing this it will create a new directory at the destination and copy current folder contents.