我一直在用头撞墙,试图让它发挥作用。
我正在编写一个rsync备份脚本,用于freebsd。我在远程服务器上没有根权限,我需要在远程服务器上很好地调用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文件格式,但我无法想出如何做到这一点。
任何帮助都会很好!
发布于 2014-02-14 05:50:10
你工作太辛苦了,让电脑工作也太辛苦了。千万不要把猫吹到grep那里去。在这种情况下,您不需要任何这些工具;只需:
while read inode blocks perm links owner group bytes month day time path; do
chown $owner:$group "$path"
done < output_fileread将把所有的拖尾字段放入路径中,保留空白。
发布于 2014-02-13 06:36:29
首先,检查输出是否良好。
awk '{print $5 ":" $6,substr($0,112)}' output_file如果好的话,试试下面的脚本
awk '{print $5 ":" $6,substr($0,112)}' output_file |while read perm file
do
chown "$perm" "$file"
donehttps://stackoverflow.com/questions/21746588
复制相似问题