Zaloha.sh 是一个目录同步器,以其小尺寸和简单性着称。 它实际上是一个 BASH 脚本. 它仅包含一个文件 Zaloha.sh,其大小为 125 KB. 该文件的大约一半是文档,另一半是程序代码。 Zaloha.sh 开箱即用。 然而,作为一个 shell 脚本,它很容易调整以从中创建最终的非标准解决方案。 使用 Zaloha,我们可以轻松地在 Linux、Unix 和 Microsoft Windows 上同步文件和目录。
请注意,Zaloha.sh 不像竞争对手的备份解决方案那样功能丰富,但这些竞争对手的解决方案也更大、更复杂和类似黑盒。 在内部,Zaloha.sh 只使用标准的 Unix 命令,如 find、sort、awk、mkdir、rmdir、cp 和 rm 来使其工作。 Zaloha.sh 在 Linux、Unix 和 Windows 下本机运行良好(当然需要 Cygwin)。
内容
安装 Zaloha.sh 目录同步器
安装 Zaloha 很简单。 只需从 GitHub 存储库下载文件 Zaloha.sh 并将其移动到您的 $PATH,例如 /usr/local/bin/.
Git 克隆 Zaloha 存储库并将 Zaloha.sh 文件移动到您的 $PATH 使用命令:
$ git clone https://github.com/Fitus/Zaloha.sh.git
$ sudo mv Zaloha.sh/Zaloha.sh /usr/local/bin/zaloha.sh
最后,使其可执行:
$ sudo chmod +x /usr/local/bin/zaloha.sh
在 Windows 上,将脚本下载到合适的本地目录。 我选择把它放到目录 C:TOOLS。
在 Windows 上,作为附加步骤, 赛格温 必须安装。 我的笔记本上已经安装了 CygWin。 如果您还没有安装 CygWin,请参考官方安装说明。
使用 Zaloha.sh 在 Linux 上同步文件和目录
Zaloha.sh 的典型用法如下。
$ zaloha.sh --sourceDir=<path_to_dir> --backupDir=<path_to_dir>
让我给你看一个简单的例子。
我将创建两个目录,即 测试1 和 测试 2.
$ mkdir test1 test2
我有两个名为 文件 1 和 文件2 在 test1 目录上。
$ ls test1/ file1 file2
并且 test2 目录是空的。
现在,我将使用 Zaloha 同步 test1 和 test2 目录:
$ zaloha.sh --sourceDir=test1/ --backupDir=test2/ --color
按 “是” 接着说。
样本输出:
ANALYZING ./test1/ AND ./test2/ =========================================== Parsing .............................................. done. find ./test2/.Zaloha_metadata/ -path ./test2/.Zaloha_metadata/999_mark_executed -printf '///tLt%yt%st%Tst%Ft%Dt%it%nt%ut%gt%mt%Pt///t%lt///n' find ./test1/ -path ./test1/.Zaloha_metadata -prune -o -ipath './test1/$RECYCLE.BIN' -prune -o -path './test1/.Trash-[0-9]*' -prune -o -path ./test1/lost+found -prune -o -printf '///tSt%yt%st%Tst%Ft%Dt%it%nt%ut%gt%mt%Pt///t%lt///n' find ./test2/ -path ./test2/.Zaloha_metadata -prune -o -ipath './test2/$RECYCLE.BIN' -prune -o -path './test2/.Trash-[0-9]*' -prune -o -path ./test2/lost+found -prune -o -printf '///tBt%yt%st%Tst%Ft%Dt%it%nt%ut%gt%mt%Pt///t%lt///n' Cleaning ............................................. done. Checking ............................................. done. Sorting (2) .......................................... done. Differences processing ............................... Zaloha AWK: Warning: No last run of Zaloha found (this is OK if this is the first run) done. Sorting (3) .......................................... done. Post-processing and splitting off Exec1 and Exec4 .... done. Sorting (4) and selecting Exec2 ...................... done. Preparing shellscript for Exec1 ...................... done. Preparing shellscript for Exec2 ...................... done. Preparing shellscript for Exec4 ...................... done. Preparing shellscript to touch file 999 .............. done. Preparing shellscripts for case of restore ........... done. TO BE COPIED TO ./test2/ =========================================== NEW file1 NEW file2 Execute above listed copies to ./test2/ ? [Y/y=Yes, other=do nothing and abort]: y cp --preserve=timestamps ./test1/file1 ./test2/file1 cp --preserve=timestamps ./test1/file2 ./test2/file2 TO BE REMOVED FROM ./test2/ ===========================================
正如你在上面的输出中看到的,Zaloha 使用标准的 Unix 命令—— 寻找, awk, 种类 和 cp.
让我们检查文件是否已同步。
$ ls test1 file1 file2
$ ls test2 file1 file2
好吧,它有效!
同步到 U 盘
以下步骤已在 Windows 10 机器上进行了测试,但该过程对于所有操作系统都是相同的。
我将笔记本上的所有工作文件都集中在一个目录结构中 C:WORK_DATA. 目前它包含数千个不同类型的文件。
我定期将该目录备份到(相当旧的)2 GB USB 闪存驱动器。 当我将该 USB 闪存驱动器插入我的笔记本电脑时,它显示为驱动器 G. U盘上的备份目录是 G:WORK_BACKUP.
所以,现在实际测试:
最近我在和一个客户开会并创建了一个 Word 文档 Meeting_Notes_0109.docx 从中。 我还修改了给该客户的报价,即 Excel 电子表格 报价_01.xlsx.
因此期望 Zaloha.sh 执行这两个文件的备份,而其他文件保持不变。
让我们运行 Zaloha.sh 看看:
$ /c/TOOLS/Zaloha.sh --sourceDir="/c/WORK_DATA" --backupDir="/cygdrive/g/WORK_BACKUP" --color
样本输出: