![Rsync 复制当前目录及名称](https://linux22.com/image/1448122/Rsync%20%E5%A4%8D%E5%88%B6%E5%BD%93%E5%89%8D%E7%9B%AE%E5%BD%95%E5%8F%8A%E5%90%8D%E7%A7%B0.png)
我想将当前目录复制到我的备份目录:
我尝试了这个命令rsync -a . ~/backup/
,但它只是复制当前目录的内容,而不是在目标目录创建新的目录。
我知道可以通过避免源路径中的尾部斜杠来实现在目标端创建新目录。但这在我的情况下不起作用,因为我使用句点(“。”)而不是目录名。
我想要 rsync 在目标路径上创建一个与当前目录同名的新目录。我该如何实现?
答案1
我喜欢你的脚本,但如果需要的话,你可以直接从当前目录通过命令行执行此操作:
rsync -a "$PWD" ~/backup/
或者以类似于你的脚本方法的方式
rsync -a "$(pwd -P)" ~/backup/
笔记:
如果路径中存在(例如一个或多个空格),则需要引用当前目录。
如果路径中有符号链接,则可以获取身体的路径避开所有符号链接
-P
在pwd
命令调用中指定选项($(pwd -P)
),或者使用其完整路径调用可执行文件($(/bin/pwd)
)。
实际上存在内置pwd
默认情况下显示符号链接路径,以及/bin/pwd
默认显示的可执行文件身体的小路。这两个命令都引用
$PWD
包含当前工作目录当他们被要求提供路径的版本时,最终符号链接:所以如果你不严格需要身体的路径,你可以避免调用子壳并直接使用变量$PWD
。rsync -a "$PWD" ~/backup/
答案2
找到了解决方案:
创建了如下新的 shell 脚本:
current_dir=`pwd`
dir_name=`basename $current_dir`
rsync -a . ~/backup/$dir_name
执行此操作时,它将在目标处创建一个新目录并复制当前文件夹的内容。