`
isno
  • 浏览: 15276 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Linux双机文件同步rsync

    博客分类:
  • PHP
阅读更多
rsync 有什么突出优点呢?首先,它被设计成只传送文件的不同部分,而非传送整个文件,以加速文件传输。比如,我正在写作本文,那我就可以现在使用 rsync 复制一次,而之后再进行一次传输。第二次(第三次、第四次……)父子文件的时候,rsync 只传送文件的不同部分。这将极大地节省时间,特别是在日常备份的过程中复制整个目录的时候。第一次复制会消耗较长时间,而下一次的传输就少多了(如果你每 天都不大幅修改目录的内容的话)。

rsync的另一个好处是它可以保留文件地所有权和访问权限信息以及复制符号链接,简而言之,它被设计成灵巧地掌控你的文件。

要安装 rsync,你应该不需要做什么 --- 一般的 Linux distro 都应该缺省安装它了。如果没有的话,你应该能在你的 distro 地软件包仓库里找到并安装它。如果你要把数据复制到远程系统上的话,两台机器都需要 rsync。

当你使用 rsync 把文件复制到另一台主机地时候,rsync 通常使用一个远程 shell,如 ssh 或 rsh 来工作。在下面的例子中,出于安全性的考虑,我们将只使用 ssh。当然,我们也可以访问使用 rsync daemon 的远程主机,不过,既然现在 ssh 几乎是无处不在的了,我们也没有必要费力气使用一个 daemon 了。

了解 rsync

rsync 的基本语法非常简单 --- 只要运行 rsync [options] source destination 就可以把文件从 source 复制到 destination。

所以,举个例子,如果你要把你归属目录里的文件复制到USB硬盘上去,你可以这么做:rsync -a /home/user/dir/ /media/disk/dir/ 。这里需要强调一下,对于 rsync 来说 "/home/user/dir/" 和 "/home/usr/dir" 是截然不同地。如果没有最后的斜线,rsync 会整个地复制目录;而有了最后的斜线,rsync 将只复制目录中的内容,而不创建目录本身。如果你想复制一个目录结构,那你就应该去掉结尾的斜线,比如在镜像 /var/www 到其他机器的时候或类似的情况。

在这个例子中,我加入了归档开关 (-a),这实际相当于同时使用几个 rsync 开关。它包括递归与复制符号链接开关、保留组与属主属性开关,总之就是让 rsync 适用于进行归档拷贝。注意,-a 不保留硬链接;如果你需要的话,还应该加上硬链接开关 (-H)。

另一个常用开关是 verbose (-v),这将让 rsync 报告更多信息。你还可以使用两个或三个 -v 开关 --- -v 将给出一些信息,-vv 会给出更多信息,而 -vvv 会把所有信息都给出来。

如果没有特别的选项,rsync 会连隐藏文件 (以 . 开头的文件) 一起复制的。如果你希望不复制隐藏文件,你应该加入开关 --exclude=".*/" 。你还可以使用 --exclude 来防止复制 vim 交换文件 (.swp) 或其他一些程序的自动备份文件 (.bak) 。

安资资源站

进行本地拷贝

假设你有一个外接 USB 或 1394 硬盘,你希望把 home 目录复制到外接驱动器上。一个不错的方法是把重要数据保存在一个顶级目录中,之后复制到外接硬盘地备份目录之中,命令如下:

rsync -avh /home/usr/dir/ /media/disk/backup/

如果你想保证本地删除的文件也在外接硬盘上被删除,你需要使用 --deleted 开关,如下:

rsync -avh --delete /home/user/dir/ /media/disk/backup

小心使用这个开关; 这个开关可能会让你在无意识的情况下删除一批无辜文件。事实上,当你要用 rsync 之前,使用 --dry-run 开关看一下要执行哪些操作而不真正同步文件可能是个好主意。如果你已经开始了一次 rsync 传输,却突然意识到这条命令可能造成数据损失的话,应该立刻用 Ctrl-C 来中止执行。一些文件可能已经损失掉了,不过你还有机会保存住剩下的。

进行远程拷贝

想要把文件复制到远程主机上? 没问题 --- 你需要做的就是加入主机和用户信息。举个例子,如果你想把同一个目录复制到远程主机上,你应该用:

rsync -avhe ssh --delete /home/user/dir/ user@remote.host.com:dir/

如果你想知道文件传输的速度,以及还有多少需要复制,可以加上 --progress 开关:

rsync --progress -avhe ssh --delete /home/user/dir/ user@remote.host.com:dir/

如果你不想每次使用 rsync 都被提示一次输入密码,确认一下你使用了 SSH 公钥机制而不是密码。要想这么做,你应该使用 ssh-keygen -t dsa ,并在密码提示环节直接按回车,以在本机上生成公钥。之后,使用 ssh-copy-id -i .ssh/id_dsa.pub user@remote.host.com 把公钥复制到远端主机上。

如果你想从远端主机上找回一些以前的备份文件,可以使用如下命令:

rsync -avze ssh remote.host.com:/home/user/dir/ /local/path/

其中,z 开关会在传输过程中压缩数据,如果你在复制的文件在本地已经存在了,rsync 将不再传输 --- 这和把文件从本地传送到远端主机没什么区别。

用一个脚本进行封装

一旦你指出了哪些目录需要进行同步,确定了同步文件的命令,就可以很容易地把这些命令封装在一个简单脚本里。这是一个简单的例子:

rsync --progress -avze ssh --delete /home/user/bin/ user@remote.host.com:bin/

rsync --progress -avze ssh --delete /home/user/local/data/ user@remote.host.com:local/data/

rsync --progress -avze ssh --delete /home/user/.tomboy/ user@remote.host.com:/.tomboy/

如果你是在交互模式下运行 rsync,可以使用 --progress 开关。如果不是交互模式的话,也就不需要这个开关了。

如果你看 rsync 的 man page 有可能会被它弄糊涂了。不过,当有了一些 rsync 的经验之后,你会发现设置 rsync 任务并不困难,它将为某天可能会来临的硬盘故障和数据损失做准备。
分享到:
评论
2 楼 小小龙猫 2010-08-20  
还可以试试这个
http://www.cis.upenn.edu/~bcpierce/unison/index.html
1 楼 niwtsew 2010-08-10  
-e ssh的时候,如果能够把密钥导入到authorized_keys下,就不用每次输入密码了,呵呵。

相关推荐

    Linux+双机热备+Rsync

    它的设计目标是快速、高效地同步文件和目录数据,能够实现全量备份与增量备份。全量备份是指将所有数据全部复制,而增量备份只复制上次备份之后发生变化的数据部分,后者大大提高了备份效率。 2. 支持的平台:Rsync...

    linux 下rsync文件夹同步配置

    rsync是一种用于文件传输的开源软件,其核心功能是文件同步,能够快速、增量地同步文件或目录。它利用“差分压缩”算法,只传输两个文件差异部分,极大提高了数据传输效率。此外,rsync支持多种传输协议,如TCP/IP,...

    linux下Rsync+sersync实现文件数据实时同步

    2. 使用sersync实时监听和同步文件变化。 3. 设置定时任务(如Cron),定期运行Rsync进行全量同步和一致性检查。 例如,创建一个Cron任务: ```bash 0 0 * * * rsync -avz --delete /local/directory user@remote_...

    两台linux服务器目录实时同步(Rsync+Inotify)

    ### 实时同步技术详解:利用Rsync与Inotify在Linux环境下构建高效同步方案 #### 一、概述 在现代IT环境中,数据同步是一项至关重要的任务,尤其是在多服务器架构下,保持数据的一致性和实时性对于业务连续性至关...

    rsync+inotify实现服务器之间文件实时同步

    rsync是一种文件同步工具,可以实现触发式的文件同步,但使用crontab守护进程方式进行触发同步的数据和实际数据会有差异,而inotify可以监控文件系统的各种变化,当文件有任何变动时,就触发rsync同步,这样刚好解决...

    Rsync+ssh双机同步测试及问题解决

    Rsync+ssh双机同步测试及问题解决是指使用Rsync和ssh协议实现双机之间的文件同步和备份。本文将详细介绍如何配置ssh的自动登录、rsync的配置、同步问题和解决方案。 一、配置ssh的自动登录 在进行双机同步之前,...

    Linux下rsync文件同步详解

    rsync 的基本使用包括同步文件、目录、软链接和硬链接。rsync 命令的基本格式为: `rsync [options] 源路径 目标路径` 其中,options 是 rsync 的选项,用于控制同步的行为。常用的选项包括: * `-t`:同步时间戳...

    linux文件实时同步

    `sersync` 是一个专门为Linux设计的实时文件同步工具,它具有比rsync更细粒度的监控和更丰富的配置选项。`linux-sersync2.tar.gz` 提供了这个工具的源码。安装并配置sersync后,可以在A服务器上监视`/opt/tongbu`...

    手把手Windows与Linux文件rsync同步方案.docx

    在Windows与Linux之间同步文件,需要借助SSH密钥对。在Linux机器上生成SSH密钥: ```bash ssh-keygen -t rsa ``` 将公钥(`id_rsa.pub`)复制到Windows机器的`~/.ssh/authorized_keys`文件中,以便无密码SSH登录。...

    linux中rsync异步服务器实现文件同步与备份.docx

    该脚本使用 Rsync 工具来同步文件,并使用 SSH protocol 来确保同步过程的安全性。 Rsync 工具提供了多种选项来控制同步过程。例如,-a 选项可以递归地同步文件,而 -z 选项可以压缩文件以加快同步速度。-delete ...

    rsync备份海量文件时占用大量内存的解决方法

    linux发行版中大多都自带rsync,不过版本比较低,一般都是2.6.X 在2.X的版本中,rsync备份时都是先列表再备份(添加或者删除),在处理大量文件时,会耗费比较多的内存。 备份的时候,rsync扫描到的每个文件(目录也...

    linux-DuplexRsync使用rsync和fswatch进行DropBoxGoogleDrive风格的双向同步

    1. **rsync**: rsync是Linux系统中的一个工具,用于高效地在本地或远程系统间同步文件和目录。它支持增量传输,只更新自上次同步以来发生改变的部分,大大减少了网络带宽的使用。 2. **fswatch**: fswatch是一个跨...

    跨Windows和Linux操作系统的开源文件同步工具

    “rsync”是文件同步工具中一个知名的名字,它是一个广泛使用的开源工具,尤其在Linux环境中。rsync以其高效的数据传输和增量同步能力而著名,它能够仅传输文件的变化部分,而不是整个文件,从而大大节省了网络带宽...

    使用Linux的rsync命令实现多服务器镜像同步.doc

    * 快速:rsync 命令可以快速地同步文件,减少数据传输量。 * 可靠:rsync 命令可以确保文件的一致性,避免数据丢失。 * 灵活:rsync 命令可以实现增量备份,减少数据传输量。 rsync 命令的应用场景 * 文件同步:...

    Linux内网离线用rsync和inotify-tools实现实时的文件夹文件单向同步和双向同步

    Linux内网离线用rsync和inotify-tools实现实时的文件夹文件单向同步和双向同步

    Rsync实现Linux系统间的远程同步和增量备份方案及搭建流程

    * 使用 Rsync 命令来同步文件和目录。 6. Rsync 的使用场景 * 远程同步和备份:Rsync 可以实现跨系统的文件同步和备份,适合大型数据中心和分布式存储系统。 * 增量备份:Rsync 可以实现增量备份,减少备份时间和...

Global site tag (gtag.js) - Google Analytics