如果同时使用便携式计算机和台式计算机,则必须同步计算机以使其保持最新状态。 另外,您可能不仅要在家中运行同步,还要从远程站点运行同步。 就我而言,每当我带着笔记本电脑旅行时,请确保将我在笔记本电脑上所做的一切都备份到台式计算机上。 (丢失笔记本电脑,从而失去所有工作根本不好!)存在针对此问题的许多解决方案:本文介绍了一种这样的工具rsync
并提到了几个相关的工具,所有这些工具都提供了简单的同步过程。
什么是rsync?
rsync
实用程序是一个文件传输和同步程序,可广泛用于Linux®和UNIX®,甚至移植到Windows®。 它的关键功能是非常快速的算法,该算法仅通过数据链接发送文件差异,从而最大程度地减少了机器之间的总数据流。 (如果使用文件传输协议[FTP]或rcp
或scp
实用程序,即使仅更改了一个字节,也会发送完整的文件。)当然, rsync
不仅限于现有文件:它也可以处理文件和目录可能只出现在链接的一端。 最后,通过压缩数据来优化通信,因此即使没有宽带连接也可以使用该工具。
获取和安装rsync
您可以获得大多数当前Linux发行版的预编译二进制软件包,这是您应该检查的第一件事。 我将Smart用于OpenSUSE的软件包管理,而安装rsync
的最新版本只需要sudo smart install rsync
即可。 如果您是所有编译的忠实拥护者,则可以获取源代码(请参阅参考资料中的链接),并使用经典的configure, make, make install
方法configure, make, make install
。 请查看随附的自述文件以获取详细说明。
为了进行安全通信,您将需要安装安全外壳(ssh)。 (您可以使用远程shell [rsh],但它的安全性还差得远。)OpenSSH是ssh的免费实现,通常在所有发行版中都可用。 您还需要在防火墙中打开一个端口,以便您的计算机可以相互连接。 所有这些配置是标准的:检查相关主题的更多信息的链接。
使用rsync
因此,让我们开始使用rsync
并将笔记本电脑与远程服务器直接同步。 为此,您可以使用类似于清单1所示的代码。 您还可以将远程服务器同步到便携式计算机(文件将从服务器发送到便携式计算机),甚至同步两个本地目录,但不能同步两个远程服务器。
清单1.相同的完整rsync命令的两个版本
rsync --compress --recursive --delete --links \
--times --perms --owner --group \
--verbose --progress --stats \
--rsh="ssh" \
--exclude "*bak" --exclude "*~" \
/my/path/at/the/laptop/* myserver:/some/path/at/the/server
rsync -zrltpogve "ssh" --progress --stats --delete \
--exclude "*bak" --exclude "*~" \
/my/path/at/the/laptop/* myserver:/some/path/at/the/server
请注意,清单1中选项的顺序是任意的,并且大多数版本都较短。 首先,-- --compress
(可选: -z
)指定将压缩数据,从而节省进程带宽。 您应该始终包括此选项。 (可以说,在非常高速的数据链接上,您可能不需要压缩,但是对于大多数远程连接链接,压缩会有所帮助。)补充选项--compress-level= level
可用于指定不同的选项。压缩程度; 但是,标准压缩级别通常是可以接受的。
--recursive
( -r
)选项使rsync
递归复制所有目录。 目录中的所有文件,包括可能的其他目录及其自身的内容,都将被复制。 如果您恰巧不需要此功能,则--dirs
选项( -d
)提供相反的效果:目录及其内容将被跳过。
默认情况下, rsync
所需的文件复制到目标计算机,但不会在此删除其他文件。 通过使用--delete
选项,目标目录将与原始目录完全相同。 但是请小心:如果您碰巧将空文件与远程目录同步,则将删除远程计算机目录中的所有内容!
如果原始目录中有符号链接,则--links
选项(也为-l
)在目标目录中重新创建这些符号链接。 或者,-- --copy-links
或-L
复制symlink指向的项目,而不是symlink本身。 如果符号链接指向复制的树的外部(存在安全风险),则可以使用--copy-unsafe-links
。 --safe-links
选项提供了一种更安全的方法,忽略了此类链接。
接下来的四个选项- --times
, --perms
, --owner
和--group
或-tpog
-make rsync
分别保持原来的更新时间戳,权限,所有者和组的详细信息。 指定所有这些选项的更简单方法是使用--archive
或-a
,它还会设置--recursive
和--links
选项。
以下三个选项( --verbose
,-- --progress
和--stats
)提供了有关rsync
在做什么的大量信息。 如果您不感兴趣,请跳过它们,除非出现错误,否则rsync
将保持安静。
尽管当前的rsync
版本默认使用ssh,但是--rsh
(或-e
)选项可让您强制使用它。 如果碰巧需要ssh额外的参数(例如,如果您已将ssh设置为使用非标准端口),则可以添加它们,如--rsh "ssh -p 12345"
。
--exclude
选项(及其兄弟姐妹--include
)使您可以选择哪些文件进行同步。 在此示例中,我排除了常见的备份文件。 根据需要排除并包括文件,以优化发送的内容。
最后,指定源路径和目标路径,您就完成了! 不要忘了最后的/*
,否则结果可能不理想。 如果查看文档,则可以发现some / path,some / path /和some / path / *之间的区别。 但是使用/*
是最安全的方法。
您可以使用-a
选项( --archive
)来缩短清单1中的命令,如清单2所示。 (对于纯粹主义者, -a
选项可以复制一些额外的元素(请参阅文档),但仅当您在服务器中以root用户身份运行rsync
,这绝对不是一件安全的事。) 检查rsync --help
和man rsync
以获得完整列表。
清单2.相同命令的更简短,更安静的版本
rsync -zae "ssh" --delete --exclude "*bak" --exclude "*~" \
/my/path/at/the/laptop/* myserver:/some/path/at/the/server
图形替代
如果您希望使用图形用户界面(GUI)而不是命令行,则有多种可能。 但是,您应该记住,没有“完美的替代品”,并且应该在进行任何特定程序之前进行一些彻底的测试。 一些程序正在开发中(尽管看起来很有趣,可以将它们包括在本评论中),而某些程序的功能更高级。 (还有一些古怪的东西,作为警告,我将其包括在内!)
GAdmin-Rsync
GAdmin-Rsync(如图1所示)是Gadmintools软件包的一部分,该软件包是用于Linux系统管理的一组GPL许可的GUI工具。 它的最新版本从2009年1月开始的0.1.1令人惊讶地低,而先前的版本是从2008年6月开始的0.1.0。安装非常简单:如果找不到可分发的软件包,则只需下载源代码并运行简单的./Autoinstall
过程。
图1.尽管其版本号较低,但GAdmin-Rsync的界面仍需进一步开发,但仍有望实现良好的功能。
一个小惊喜是该程序需要root密码。 称我具有安全意识,但除非有必要,否则我当然不喜欢以root用户身份工作。 对于root用户,错误通常代价更高!
首次使用此工具时,它将询问有关要运行的备份的详细信息。 GAdmin-Rsync允许您定义多个备份,因此更容易重新运行它们。 您需要指定备份的类型(本地到本地,本地到远程或远程到本地)以及适当的目录和服务器数据。 但请注意:我没有找到一种方法来编辑服务器参数,因此要修复它们,将需要创建一个新的备份-不太用户友好。 我还遇到了另一个问题:该程序将不接受无密码的连接。
GAdmin-Rsync中没有多余的装饰。 例如,您不能仅执行“空运行”。 相反,有一种简单的方法可以指定要在以后运行的cron
作业。 此功能可能反映了该程序的“面向根”的思想:它不是针对临时用户的,而是针对系统管理员的。 (“帮助”功能对此表示赞同:它只是说“如何使用GAdmin-Rsync进行备份:请访问http://www.gadmintools.org”,仅比“ RTFM”注释高出一个档!)取决于此程序的多少取决于您对系统管理员一心一意,但这很有用。
Grsync
Grsync(如图2所示)是用于rsync的基于GTK的GUI,但不仅限于Gnome。 它的最新版本是2008年12月发布的0.6.2,这意味着该程序仍受支持并且正在开发中。 其最有趣的功能包括:
- 将设置保存为“会话”,以便您可以轻松地重新运行备份过程。
- 在实际提交备份之前允许进行“模拟”(空运行)。
- 在备份作业之前和之后执行其他命令。
- 例如,包括一个命令行版本
grsync-batch
,它使您可以从cron
计划的运行中运行Grsync会话。
图2. Grsync并没有提供太多底层rsync命令的选项,但是它非常有用且稳定。
![Grsync](https://i-blog.csdnimg.cn/blog_migrate/a603ea1d67324a2978119d958cc84577.png)
在主页上(请参阅参考资料中的链接),您将仅找到源代码,如果您具有GTK和Autotools,则可以自行编译。 但是,您可以找到适用于许多发行版的现成二进制文件,包括OpenSUSE,Mandriva,Red Hat(以及Fedora和CentOS)等等。 Grsync只是一个前端,因此它不包括rsync
:您必须首先自己安装它。
并非所有rsync
功能都可用,但是对于大多数用户而言,所包含的选项就足够了。 如果需要某些内容,请单击“ 高级选项”选项卡,然后您可以添加所需的任何选项。 但是,请谨慎使用语法:如果您犯了一个错误,Grsync不会抱怨,但是rsync
会抱怨,并且在您尝试执行备份时会收到错误消息。 除此之外,该软件包还非常实用且稳定-可能是我查看过的所有GUI中最好的。
QSync和TKsync
QSync是基于Qt的界面,但是从2005年12月起,它的开发似乎已经停止在0.3版中。我不推荐使用此工具:它需要自己的rsync
版本,因此不会使用您特定的最新版本。 -date rsync
软件包,而是命令的内部(一定是旧版本)。 我下载了一个OpenSUSE软件包,但它无法运行,并且坦率地说,尝试为看似已废弃的软件包尝试自定义构建似乎并不值得。 作者本人(在2003年)承认“ QSync的同步部分还不太正确”,并且由于此后没有进行任何更新,因此有理由认为该问题尚未解决。
对rsync
GUI运行Google搜索可能会导致您转到另一个项目TKsync,该项目的最新版本(0.2.1)于2004年发布。但是,搜索未能获得(显然已删除)项目页面。 因此,称此项目为死是相当安全的。 如果碰巧找到一个安装软件包,最好不理会它。
Zynk
即使Zynk(显然)处于其开发周期的开始,该程序看起来也很有希望提及。 另外,您可能会找到几个发行版的版本,并且应了解其(当前)限制。 最后,请注意Zynk是一个GTK +应用程序,但是可以在没有Gnome的情况下运行。 特别是,我在K桌面环境(KDE)下运行测试。
关于开发状态,Zynk当前是2009年2月发布的0.0.2版,作者本人警告说:“目前有数百个错误!只有部分软件可以按预期运行!请自担风险! ” 据他估计,该程序仅完成了大约10%,尽管看上去比它更完整, 如图3所示。
图3. Zynk处于开发周期的开始,但看起来很有希望。
Zynk显然提供了大多数(如果不是全部) rsync
选项。 (顺便说一下,您需要预先安装rsync
。)在窗口底部,您可以看到将要执行的命令及其输出。
运行了一些测试之后,我必须同意该程序需要做更多的工作。 但是与QSync不同,似乎开发正在进行中,因此该程序实际上有可能变得可用。
结论
rsync
实用程序是命令行工作中必不可少的工具,您需要学习如何使用它来实现轻松,安全,快速的笔记本电脑-桌面同步。 如果您更需要GUI,Grsync似乎是当今最好的选择,因为QSync已经过时,而且GAdmin-Rsync和Zynk都处于开发周期的开始。
翻译自: https://www.ibm.com/developerworks/aix/library/au-rsyncfamily/index.html