我一直在撞墙,试图使它起作用。
我正在编写用于freebsd的rsync备份脚本。我在远程服务器上没有root特权,因此我需要在远程服务器上很好地对文件进行mv和cp操作,因此一旦还原它们,我将失去所有权。
我正在尝试创建一个权限文件来备份所有权限和所有权,以便在数据还原完成后重新应用。
这是备用代码
find /dir -ls >> output_file
这是还原代码
for f in `cat output_file|awk '{print $11}'` ; do chown `cat output_file|grep $f\$|awk '{print $5 ":" $6}'` $f ; done
这是output_file的示例
23319 3857 -rwxrwxrwx 1 root root 1867545 Jan 9 22:55 /mnt/Tank2/Users/root/stampede/Little_House.jpg
23320 3089 -rwxrwxrwx 1 root root 1530449 Jan 9 22:57 /mnt/Tank2/Users/root/stampede/Milky_Way.jpg
23325 3857 -rwxrwxrwx 1 root root 1938544 Jan 9 22:47 /mnt/Tank2/Users/root/stampede/Shy_Horses.jpg
23324 3857 -rwxrwxrwx 1 root root 1940621 Jan 9 22:50 /mnt/Tank2/Users/root/stampede/Reinforcements.jpg
除非文件或文件夹名称中有空格,否则一切都会正常进行,否则它将失败。如果我的文件夹被称为“文件夹1”,则脚本只会得到“文件夹”,我想我所要做的就是让“ cat output_file | awk'{print $ 11}'”从$ 11扩展到该行的末尾且在每个空格之前添加\,以便输出符合标准* nux文件格式,但是我无法弄清楚该怎么做。
任何帮助将是巨大的!
您的工作方式太辛苦了,并且使计算机的工作也太辛苦了。切勿用猫将grep传送到awk。在这种情况下,您不需要任何这些工具。做就是了:
while read inode blocks perm links owner group bytes month day time path; do
chown $owner:$group "$path"
done < output_file
读取会将所有尾随字段放入路径中,从而保留空白。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句