🐧 Как синхронизировать файлы и каталоги на Linux и Windows с помощью Zaloha.sh — Information Security Squad
🐧 Как синхронизировать файлы и каталоги на Linux и Windows с помощью Zaloha.sh

Zaloha.sh — это синхронизатор каталогов, который отличается небольшим размером и простотой.

На самом деле это скрипт BASH.

Он состоит только из одного файла Zaloha.sh, размер которого составляет 125 кБ.

Примерно половина этого файла — документация, другая половина — программный код.

Zaloha.sh работает «из коробки».

Однако, как скрпит оболочки, он легко настраивается для создания возможных нестандартных решений.

Используя 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 тривиальна.

Просто скачайте файл Zaloha.sh из репозитория GitHub и переместите его в свой $ 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 на свой ноутбук.
Если вы еще не установили CygWin, ознакомьтесь с официальными инструкциями по установке.

Синхронизация файлов и каталогов в Linux с помощью Zaloha.sh

Типичное использование Zaloha.sh заключается в следующем.

$ zaloha.sh --sourceDir=<path_to_dir> --backupDir=<path_to_dir>

Позвольте мне показать вам простой пример.

Я собираюсь создать две директории, а именно test1 и test 2.

$ mkdir test1 test2

У меня есть два текстовых файла с именем file1 и file2 в каталоге test1.

$ ls test1/
file1 file2

И каталог test2 пуст.

Теперь я собираюсь синхронизировать каталоги test1 и test2 с помощью Zaloha:

$ zaloha.sh --sourceDir=test1/ --backupDir=test2/ --color

Нажмите «y», чтобы продолжить.

Пример вывода:

ANALYZING ./test1/ AND ./test2/
===========================================
Parsing .............................................. done.
find ./test2/.Zaloha_metadata/ -path ./test2/.Zaloha_metadata/999_mark_executed -printf '///\tL\t%y\t%s\t%Ts\t%F\t%D\t%i\t%n\t%u\t%g\t%m\t%P\t///\t%l\t///\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 '///\tS\t%y\t%s\t%Ts\t%F\t%D\t%i\t%n\t%u\t%g\t%m\t%P\t///\t%l\t///\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 '///\tB\t%y\t%s\t%Ts\t%F\t%D\t%i\t%n\t%u\t%g\t%m\t%P\t///\t%l\t///\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 — find, awk, sort и cp.

Давайте проверим, были ли файлы синхронизированы или нет.

$ ls test1
file1 file2
$ ls test2
file1 file2

Как видите, скрипт отработал

Синхронизация с флешкой

Следующие шаги были протестированы на компьютере с Windows 10, однако процедура одинакова для всех операционных систем.

Все мои рабочие файлы на ноутбуке сосредоточены в структуре каталогов в C:\WORK_DATA.

В настоящее время он содержит несколько тысяч файлов различных типов.

Я регулярно делаю резервную копию этого каталога на (довольно старый) 2 ГБ USB-накопитель.

Когда я подключаю флэш-накопитель USB к ноутбуку, он отображается как диск G.

Каталог резервного копирования на флэш-диске USB — G:\WORK_BACKUP.

Итак, теперь актуальный тест:

Недавно я был на встрече с клиентом и создал из него документ Word Meeting_Notes_0109.docx.

Я также изменил предложение для этого клиента, которое представляет собой электронную таблицу Excel offer_01.xlsx.

Таким образом, ожидается, что Zaloha.sh выполнит резервное копирование этих двух файлов, оставив остальные файлы без изменений.
Давайте запустим Zaloha.sh, чтобы увидеть результат:

$ /c/TOOLS/Zaloha.sh --sourceDir="/c/WORK_DATA" --backupDir="/cygdrive/g/WORK_BACKUP" --color

Пример вывода:

Видно, что Zaloha.sh запускает Unix find в обоих каталогах C:\WORK_DATA (в CygWin/c/WORK_DAT) и G: \ WORK_BACKUP (в CygWin /cygdrive/g/WORK_BACKUP), затем выполняет несколько шагов обработки и, наконец, он представляет то, что собирается сделать, запрашивая подтверждение.

Файл Meeting_Notes_0109.docx помечен как NEW (черного цвета), а файл offer_01.xlsx помечен как UPDATE (красного цвета).

Красный цвет тега UPDATE предупреждает пользователя о том, что эта операция требует большего внимания, поскольку старые данные в каталоге резервного копирования будут перезаписаны.

После подтверждения приглашения «y» Zaloha.sh выполняет представленные операции.

Если мы теперь из любопытства снова запустим указанную выше команду, мы увидим, что Zaloha.sh выполняет шаги анализа, а затем ничего не делает, поскольку каталоги уже синхронизированы.

 

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *