快速业务通道

同步 UNIX 文件

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-05-12

有许多工具可以用来跨 UNIX® 目录同步文件,但是要想有效且安全地完成这个任务,就需要多做一些工作.本文介绍跨 UNIX 文件系统和不同的计算机系统安全地同步文件的解决方案,包括如何为了执行备份同步文件的加密版本.
文件同步就是在一个位置添加、修改或删除文件时,在另一个位置添加、修改或删除同一个文件的过程.本文讨论三个实用程序,cp、tar 和 rsync,它们都有助于同步 UNIX 文件.cp 和 tar 命令的同步功能有限,而 rsync 提供很全面的选项;尽管如此,它们都有各自适用的场合.

用 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).


清单 1. 进入父目录并使用相对路径

$ cd /
$ tar cf etc.tar ./etc

在提取存档文件时,会在相对位置重新创建文件.可以使用这种方法帮助同步目录. 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 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号