我正在尝试编写一个简短的shell脚本,该脚本还可以处理将一个文件复制webcam.jpg
到一个日期编码的子目录中的情况。我为此使用rsync,因为它不存在时会自动创建目录。
我使用时一切正常:
rsync -a webcam.jpg ./$(date +%Y-%m-%d)/$(date +%Y-%m-%d_%H-%M).jpg
但是当深入一个目录时,rsync开始引发错误,我真的不知道为什么。我在输入:
rsync -a webcam.jpg ./saved_images/$(date +%Y-%m-%d)/$(date +%Y-%m-%d_%H-%M).jpg
我的输出是:
rsync: change_dir#3 "/var/www/tmp/test//./saved_images/2013-07-07" failed: No such file or directory (2)
rsync error: errors selecting input/output files, dirs (code 3) at main.c(677) [Receiver=3.0.9]
rsync: connection unexpectedly closed (9 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(605) [sender=3.0.9]
我在第一行中看到了相关的错误,但是为什么rsync首先尝试访问此test//./saved_images
目录?这有什么错test/saved_images/
?
确定/var/www/tmp/test//./saved_images/2013-07-07
与相同/var/www/tmp/test/saved_images/2013-07-07
。
/
您可以键入Double ,ls ////
并且它与相同ls /
。
点.
是它所在的目录。因此ls /.
显示的输出与之相同ls /
,因此/var/www/tmp/test/.
指向该目录/var/www/tmp/test/
。
因此,rsync
就您而言var/www/tmp/test/
(至少在路径以a开头时.
),仅获取当前目录所在的目录即可。然后,它增加了一个额外的内容,/
因此可以确保它的路径肯定有/
结束。在最后一步中,它添加了您给它的零件,在这里./saved_images/$(date +%Y-%m-%d)/$(date +%Y-%m-%d_%H-%M).jpg
您看到的错误是该目录/var/www/tmp/test/saved_images/
不存在,并且rsync
将不会创建该目录,因为该rsync
目录缝仅创建一个目录。
也许是因为您的问题,您应该只使用带有
today_dir=$(date +%Y-%m-%d)
mkdir -p ./$today_dir/
cp webcam.jpg ./$today_dir/$(date +%Y-%m-%d_%H-%M).jpg
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句