在Linux系统中如何使用Osync脚本双向同步文件

1. 前言

很多时候,我们需要在多台设备上同步文件。基于命令行界面的osync,它成为一个理想的文件同步解决方案,可以在三种模式下执行:

  • 手动
  • 通过计划任务
  • 通过守护进程(在新文件更改时触发)

这个基于状态的同步器充当rsync wrapper。Osync被认为是有状态的,因为它没有义务监控目标文件的更改。

在两次运行之间,osync将比较副本文件列表。这些运行可以是本地到本地或本地到远程。本地到本地的复制大约需要2秒,本地到远程的复制大约需要7秒。

在Linux系统中如何使用Osync脚本双向同步文件

在Linux系统中如何使用Osync脚本双向同步文件

2. Osync特性

突出的Osync功能亮点:

  • 支持本地到本地同步和本地到远程同步。
  • 完整的脚本时间控制。
  • 邮件提醒
  • 作为守护进程或按计划运行
  • 目录的监控
  • 日志记录工具
  • 通过批处理运行程序处理多个同步任务,并通过重新运行的选项处理失败的同步任务
  • 恢复场景处理容错
  • 扩展属性和POSIX ACL同步
  • 命令执行前/后运行
  • 处理多个备份和软删除

如果您需要快速运行,您可能需要禁用某些osync特性,如磁盘空间检查和某此属性。目标器/启动器同步模式也适用于osync。

3. 在Linux安装Osync

osync的稳定或最新版本可以在Github上找到。首先需要安装git,然后才能从Github检索并安装osync文件同步工具。

根据您的Linux操作系统发行版使用以下安装指南之一。

3.1 在基于RHEL的发行版上安装Osync

sudo yum install git
sudo git clone -b "stable" https://github.com/deajan/osync
cd osync
sudo bash install.sh

3.2 在基于Debian的发行版上安装Osync

sudo apt install git
sudo git clone -b "stable" https://github.com/deajan/osync
cd osync
sudo bash install.sh

3.3 在Arch Linux上安装Osync

sudo pacman -S git
sudo git clone -b "stable" https://github.com/deajan/osync
cd osync
sudo bash install.sh

3.4 在OpenSUSE上安装Osync

sudo zypper install git
sudo git clone -b "stable" https://github.com/deajan/osync
cd osync
sudo bash install.sh

当从Github中克隆osync时,从git clone命令中移除-b "stable"选项将获取osync最新的开发版。

4. 如何使用Osync在Linux系统中双向同步文件

在Linux系统中如何使用Osync脚本双向同步文件

如何使用Osync在Linux系统中双向同步文件

如前所述,有三种使用osync的方法。

  • 快速同步模式
  • 配置文件模式
  • 守护进程模式

4.1 使用快速同步方式实现本地到本地和本地到远程文件同步

然而,这种方法对于寻求在目录之间实现快速同步的用户来说很方便。对于本地到本地目录,考虑以下osync语法:

osync.sh --initiator="/path/to/directory1" --target="/path/to/directory2"

以下是一个使用案例:

sudo osync.sh --initiator="/home/zcwyou/filename" –target="/home/zcwyou/filename_Backup"

对于本地到远程目录,您可能需要先为您的机器配置SSH无密码访问。

假设远程服务器的IP为203.18.20.XX

sudo ssh-keygen -t rsa 
sudo ssh-copy-id ubuntu@203.18.20.XX
sudo ssh ubuntu@203.18.20.XX

本地到远端实现快速同步的语法如下:

osync.sh --initiator="/path/to/another/directory" --target="ssh://user@host/IP:22//path/to/directory2" 

以下是一个使用案例:

sudo osync.sh --initiator="/home/zcwyou/filename" --target="ssh://ubuntu@203.18.20.XX:22//home/zcwyou/filename_remotesync"

osync命令还可以包括以下命令选项,以帮助您诊断严重错误。

--summary --errors-only --no-prefix

使用案例:

osync.sh --initiator="/path/to/another/directory"--target="ssh://user@host/IP:22//path/to/directory2" --summary --errors-only --no-prefix 

4.2 配置计划任务自动同步文件

在Linux系统中如何使用Osync脚本双向同步文件

配置计划任务自动同步文件

我们可以通过cron作业实现自动化快速同步模式的任务。

sudo su
crontab -e

为本地到本地和本地到远程目录添加以下两个cron计划任务以实现自动化同步文件:

 */5        *        *        *        * osync.sh --initiator="/home/zcwyou/filename" –target="/home/dnyce/filename_Backup"
 */5        *        *        *        * osync.sh --initiator="/home/zcwyou/filename" --target="ssh://ubuntu@203.18.20.XX:22//home/ubuntu/filename_remotesync"

5. 总结

Osync是本地到本地和本地到远程目录理想的双向同步解决方案。它可以实现关键数据的完美备份计划,以防意外删除或损坏文件。