rsync --exclude 使用 bash 变量时的问题
rsync --exclude issue when using bash variable
我需要在 bash 中使用 rsync 将源目录复制到目标目录下,排除具有特定扩展名 (.qcow2) 的文件。当我尝试手动输入命令时它工作正常,但是当使用 bash 变量时失败。
我设置了一个bash变量,下面是它的内容:
# echo $line
/mnt/source --exclude='*.qcow2'
虽然有排除参数,但rsync正在复制“.qcow2”文件:
# rsync -av $line destination/
sending incremental file list
source/Atlas/
source/Atlas/atlas.sh
source/Atlas/atlas.qcow2
sent 2143238309 bytes received 56 bytes 115850722.43 bytes/sec
total size is 2143164594 speedup is 1.00
同时 rsync 正在 运行ning 我可以看到如下过程:
# ps -ef | grep rsync
root 39058 11032 62 14:56 pts/22 00:00:01 rsync -av /mnt/source --exclude='*.qcow2' destination/
root 39059 39058 0 14:56 pts/22 00:00:00 rsync -av /mnt/source --exclude='*.qcow2' destination/
root 39060 39059 71 14:56 pts/22 00:00:02 rsync -av /mnt/source --exclude='*.qcow2' destination/
root 39066 14866 0 14:56 pts/24 00:00:00 grep rsync
".qcow2"文件是上面复制的,这是我要避免的。
当我 运行 没有变量的相同命令时,如 ps 输出所示(删除目标目录中的文件后),它正常工作,“.qcow2”文件是未转移:
# rm -f destination/Atlas/*
# rsync -av /mnt/source --exclude='*.qcow2' destination/
sending incremental file list
source/Atlas/
source/Atlas/atlas.sh
sent 14956 bytes received 37 bytes 29986.00 bytes/sec
total size is 202930 speedup is 13.53
如何使用 bash 中的变量来避免“.qcow2”文件传输?
提前致谢
您的变量中的引号已关闭。试试这个:
$ line='/mnt/source --exclude=*.qcow2'
$ echo $line
/mnt/source --exclude=*.qcow2
$ rsync -av $line destination/
我需要在 bash 中使用 rsync 将源目录复制到目标目录下,排除具有特定扩展名 (.qcow2) 的文件。当我尝试手动输入命令时它工作正常,但是当使用 bash 变量时失败。
我设置了一个bash变量,下面是它的内容:
# echo $line
/mnt/source --exclude='*.qcow2'
虽然有排除参数,但rsync正在复制“.qcow2”文件:
# rsync -av $line destination/
sending incremental file list
source/Atlas/
source/Atlas/atlas.sh
source/Atlas/atlas.qcow2
sent 2143238309 bytes received 56 bytes 115850722.43 bytes/sec
total size is 2143164594 speedup is 1.00
同时 rsync 正在 运行ning 我可以看到如下过程:
# ps -ef | grep rsync
root 39058 11032 62 14:56 pts/22 00:00:01 rsync -av /mnt/source --exclude='*.qcow2' destination/
root 39059 39058 0 14:56 pts/22 00:00:00 rsync -av /mnt/source --exclude='*.qcow2' destination/
root 39060 39059 71 14:56 pts/22 00:00:02 rsync -av /mnt/source --exclude='*.qcow2' destination/
root 39066 14866 0 14:56 pts/24 00:00:00 grep rsync
".qcow2"文件是上面复制的,这是我要避免的。
当我 运行 没有变量的相同命令时,如 ps 输出所示(删除目标目录中的文件后),它正常工作,“.qcow2”文件是未转移:
# rm -f destination/Atlas/*
# rsync -av /mnt/source --exclude='*.qcow2' destination/
sending incremental file list
source/Atlas/
source/Atlas/atlas.sh
sent 14956 bytes received 37 bytes 29986.00 bytes/sec
total size is 202930 speedup is 13.53
如何使用 bash 中的变量来避免“.qcow2”文件传输?
提前致谢
您的变量中的引号已关闭。试试这个:
$ line='/mnt/source --exclude=*.qcow2'
$ echo $line
/mnt/source --exclude=*.qcow2
$ rsync -av $line destination/