同步 UNIX 文件
有许多工具可以用来跨 UNIX® 目录同步文件,但是要想有效且安全地完成这个任务,就需要多做一些工作.本文介绍跨 UNIX 文件系统和不同的计算机系统安全地同步文件的解决方案,包括如何为了执行备份同步文件的加密版本. 用 cp 命令执行直接复制 尽管 cp 命令并不是真正的同步命令,但它可能是在两个位置之间复制文件的最简单方法.对于单一文件复制,cp 显然是非常高效的:$ cp source destination. 要想复制整个目录结构,可以使用 -r 选项递归地把整个目录结构从一个位置复制到另一个位置:$ cp -r source destination.这种复制方法仅仅递归地复制文件和目录.文件的权限、所有者和其他元数据并不会复制到目标位置.可以使用 -p 选项保留复制的每个文件和目录的所有者、权限和时间:$ cp -pr source destination. 使用 cp 命令是最容易最公认的文件复制方法,但是 cp 的效率很低,如果不使用 NFS 这样的远程文件系统解决方案,就不可能把目录复制到远程系统上. 使用 tar tar(tape archive 的简写)实用程序原来用于高效地把目录结构(包括文件和文件元数据)转换为二进制流,然后就可以把二进制流写到备份磁带上. 通常使用 tar 创建一个包含所需目录的 .tar 文件:$ tar cf mydir.tar ./mydir.c 选项让 tar 创建新的存档文件,f 选项使用后面的参数指定要创建的存档文件的名称 (mydir.tar).其余参数指定应该包含在存档文件中的文件或目录.tar 命令自动地递归遍历目录结构,如果指定包含一个目录,tar 将在存档文件中包含这个目录以及其中的所有文件和目录. tar 的一个重要特点是,用户指定的路径名被看作绝对路径.也就是说,如果为 tar 指定完整的目录位置,例如 /etc 目录:$ tar cf etc.tar /etc.那么,在默认情况下,tar 将把文件提取到它们的绝对位置.例如,如果提取这个存档文件:$ tar xf etc.tar,就会在 /etc 目录中重新创建文件和目录结构.这可能会产生破坏(可能会覆盖 /etc 中希望保留的文件).这个问题有两种解决方法.第一种是使用 GNU tar,它支持通过 --strip-path 选项从提取的路径中删除元素. 另一个简单的解决方法是进入父目录,然后使用相对路径(见清单 1).
在提取存档文件时,会在相对位置重新创建文件.可以使用这种方法帮助同步目录. tar 创建目录结构的字节流,可以通过结合使用 tar 和管道把文件从一个位置复制到另一个位置:$ tar cf - ./etc |( cd /backup; tar xf - ).“-” 指定 tar 应该使用标准输出(在写时)或标准输入(在读时).圆括号让语句在一个子 shell 中执行.看一下管道符前面的代码,它创建文件的字节流并发送到标准输出.在管道符后面,切换到另一个目录,然后从标准输入提取字节流. 要想保留文件的所有者和权限,可以使用 p 选项保留每个文件和目录的元数据:$ tar cfp - ./etc |( cd /backup; tar xfp - ). 掌握这种基本结构之后,就可以执行更复杂的操作.例如,可以只复制在特定时间之后修改过的文件:$ tar cf - --newer 20090101 ./etc |(cd /backup; tar xf - ).这个命令创建在 2009 年 1 月 1 日之后修改过的文件的拷贝. 通过与 rsh 或 ssh 结合使用,还可以把文件同步到远程主机:$ tar cfp - ./etc |(ssh user@host -- tar xfp -).按照这种方式使用 ssh 和 tar 是在远程主机上创 |
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |