GNU/Linux >> Belajar Linux >  >> Linux

Cara Sinkronisasi File Dan Direktori Menggunakan Zaloha.sh

Zaloha.sh adalah sinkronisasi direktori yang menonjol karena ukurannya yang kecil dan kesederhanaannya. Ini sebenarnya adalah skrip BASH . Ini hanya terdiri dari satu file, Zaloha.sh, yang ukurannya 125 kB . Kira-kira setengah dari file itu adalah dokumentasi, setengahnya lagi adalah kode program. Zaloha.sh bekerja di luar kotak. Namun, sebagai skrip shell, mudah disesuaikan untuk membuat solusi non-standar akhirnya darinya. Dengan Zaloha, kita dapat dengan mudah menyinkronkan file dan direktori di Linux, Unix dan Microsoft Windows.

Harap dicatat bahwa Zaloha.sh tidak kaya fitur seperti solusi cadangan yang bersaing, tetapi solusi yang bersaing itu juga lebih besar, lebih kompleks, dan seperti kotak hitam. Secara internal, Zaloha.sh hanya menggunakan perintah Unix standar, seperti find, sort, awk, mkdir, rmdir, cp dan rm, untuk membuatnya bekerja. Zaloha.sh bekerja dengan baik secara native di Linux, Unix dan Windows (Cygwin diperlukan, tentu saja).

Instal Zaloha.sh Directory Synchronizer

Menginstal Zaloha itu sepele. Cukup unduh file Zaloha.sh dari repositori GitHub dan pindahkan ke $PATH Anda, misalnya /usr/local/bin/ .

Git clone repositori Zaloha dan pindahkan file Zaloha.sh ke $PATH Anda menggunakan perintah:

$ git clone https://github.com/Fitus/Zaloha.sh.git
$ sudo mv Zaloha.sh/Zaloha.sh /usr/local/bin/zaloha.sh

Terakhir, buat agar dapat dieksekusi:

$ sudo chmod +x /usr/local/bin/zaloha.sh

Di windows, unduh skrip ke direktori lokal yang sesuai. Saya memilih untuk meletakkannya di direktori C:\TOOLS.

Di Windows, sebagai langkah tambahan, CygWin harus dipasang. Saya sudah menginstal CygWin di Notebook saya. Jika Anda belum menginstal CygWin, silakan lihat petunjuk instalasi resmi.

Sinkronisasi File Dan Direktori Di Linux Menggunakan Zaloha.sh

Penggunaan khas Zaloha.sh adalah sebagai berikut.

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

Mari saya tunjukkan contoh sederhana.

Saya akan membuat dua direktori yaitu test1 dan uji 2 .

$ mkdir test1 test2

Saya memiliki dua file teks bernama file1 dan file2 pada direktori test1.

$ ls test1/
file1 file2

Dan direktori test2 kosong.

Sekarang, saya akan menyinkronkan direktori test1 dan test2 menggunakan Zaloha:

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

Tekan "y" untuk melanjutkan.

Contoh keluaran:

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/
===========================================

Seperti yang Anda lihat pada output di atas, Zaloha menggunakan perintah Unix standar - find , awk , urutkan dan cp .

Mari kita periksa apakah file telah disinkronkan atau tidak.

$ ls test1
file1 file2
$ ls test2
file1 file2

Yah, itu berhasil!!

Sinkronisasi ke USB flash drive

Langkah-langkah berikut telah diuji pada mesin Windows 10, namun prosedurnya sama untuk semua sistem operasi.

Saya memiliki semua file pekerjaan saya di notebook yang terkonsentrasi di struktur direktori di bawah C:\WORK_DATA . Saat ini berisi beberapa ribu file dari berbagai jenis.

Saya secara teratur mencadangkan direktori itu ke flash drive USB 2 GB (cukup lama). Saat saya mencolokkan USB flash drive ke notebook saya, itu muncul sebagai drive G . Direktori cadangan pada flash drive USB adalah G:\WORK_BACKUP .

Jadi, sekarang tes yang sebenarnya:

Baru-baru ini saya menghadiri rapat dengan pelanggan dan membuat dokumen Word Meeting_Notes_0109.docx dari itu. Saya juga telah mengubah tawaran untuk pelanggan itu, yaitu spreadsheet Excel penawaran_01.xlsx .

Jadi harapannya adalah Zaloha.sh melakukan pencadangan kedua file ini, membiarkan file lainnya tidak tersentuh.
Mari kita jalankan Zaloha.sh untuk melihat:

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

Contoh keluaran:

Dapat dilihat bahwa Zaloha.sh menjalankan Unix find di kedua direktori C:\WORK_DATA (di bawah CygWin /c/WORK_DATA) dan G:\WORK_BACKUP (di bawah CygWin /cygdrive/g/WORK_BACKUP), kemudian melakukan beberapa langkah pemrosesan dan akhirnya itu menyajikan apa yang akan dilakukannya, meminta konfirmasi.

File Meeting_Notes_0109.docx ditandai sebagai BARU (dalam warna hitam), dan file offer_01.xlsx ditandai sebagai UPDATE (dalam warna merah). Warna merah dari tag UPDATE memberi tahu pengguna bahwa operasi ini membutuhkan lebih banyak perhatian, karena data lama di direktori cadangan akan ditimpa.

Setelah mengkonfirmasi prompt dengan "y", Zaloha.sh melakukan operasi yang disajikan.

Jika sekarang, karena penasaran, menjalankan perintah di atas lagi, kita dapat melihat bahwa Zaloha.sh melakukan langkah-langkah analisis, dan kemudian tidak melakukan apa-apa, karena direktori telah disinkronkan.

Sinkronisasi Terbalik

Sekarang mari kita uji fitur lain dari Zaloha.sh, sebuah "sinkronisasi terbalik" .

Asumsikan saya, untuk beberapa alasan, bekerja langsung di USB flash drive dan saya ingin pekerjaan saya disinkronkan kembali ke notebook.

Fitur ini harus diaktifkan secara eksplisit oleh --revNew dan --revUp pilihan.

Opsi --revNew menginstruksikan Zaloha.sh untuk menyalin ke direktori sumber (notebook) file pada direktori cadangan (drive USB) yang hanya ada di direktori cadangan dan lebih baru daripada Zaloha.sh yang terakhir dijalankan.

Opsi --revUp menginstruksikan Zaloha.sh untuk menyalin ke direktori sumber (notebook) file di direktori cadangan (drive USB) yang ada di kedua lokasi dan file yang lebih baru ada di direktori cadangan.

Sekarang mari kita uji. Saya pergi ke USB flash drive (yaitu G:\WORK_BACKUP\IKT\2020) dan membuat dokumen Word baru bernama Meeting_Notes_0113.docx di sana. Selanjutnya saya buka Excel pada file offer_01.xlsx , lakukan beberapa pengeditan dan simpan.

Sekarang mari kita jalankan Zaloha.sh menggunakan baris perintah berikut:

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

Dapat dilihat bahwa Zaloha.sh memang membalikkan sinkronisasi Meeting_Notes_0113.docx dan offer_01.xlsx kembali ke notebook. Sekali lagi, tag REV.UP dari offer_01.xlsx ditampilkan dalam warna merah, memperingatkan pengguna bahwa data akan ditimpa.

Fitur lebih lanjut

Apa yang harus diperhatikan lebih lanjut:Deteksi file yang memerlukan sinkronisasi didasarkan pada waktu modifikasi file dan ukuran file, yang merupakan metode yang biasa digunakan oleh banyak alat sinkronisasi. Namun, Zaloha.sh mampu melakukan perbandingan byte demi byte demikian juga. Ini dapat diaktifkan dengan opsi baris perintah.

Pada sistem file yang mendukung hardlink, Zaloha.sh dapat menghapus duplikat hardlink dan menyalin file hardlink hanya sekali ke direktori cadangan. Sekali lagi, ini dapat diaktifkan dengan opsi baris perintah.

Zaloha.sh berisi beberapa opsi lain untuk memodifikasi fungsinya. Semua dijelaskan dalam dokumentasi. Dokumentasi juga menyediakan sejumlah teks yang layak untuk deskripsi cara kerja internal Zaloha.sh. Satu item penting untuk disebutkan di sini adalah bahwa Zaloha.sh membuat direktori kerja .Zaloha_metadata di bawah direktori cadangan, tempat menyimpan file sementara dan metadatanya.

Bacaan yang disarankan:

  • Cara Menyinkronkan Direktori Lokal Dan Jarak Jauh Di Linux

Kesimpulan

Membuat Zaloha.sh bekerja memang mudah, terutama di Linux. Bersama dengan penyesuaian yang mudah karena menjadi skrip shell, Zaloha.sh mungkin memberikan nilai tambah dalam beberapa situasi yang bisa dibayangkan. Untuk detail lebih lanjut, lihat repositori Zaloha GitHub yang diberikan di bawah ini. Repositori berisi, selain Zaloha.sh itu sendiri, kasus uji demo sederhana, tangkapan layar, dan dokumentasi online. Dokumentasi online sama dengan dokumentasi dalam Zaloha.sh, tetapi versi online dalam format HTML dan lebih bagus.

Semoga membantu.


Linux
  1. Cara Menyinkronkan Direktori Lokal Dan Jarak Jauh Di Linux

  2. Cara Mengarsipkan File Dan Direktori Di Linux [Bagian 2]

  3. Cara Mengarsipkan File Dan Direktori Di Linux [Bagian 1]

  1. Cara Mengenkripsi dan Mendekripsi File dan Direktori Menggunakan Tar dan OpenSSL

  2. Cara Menyinkronkan Direktori Menggunakan Lsyncd di Ubuntu 20.04

  3. Menggunakan rsync untuk Menyinkronkan File

  1. Cara Menyalin File dan Direktori di Linux

  2. Cara Menghapus Direktori dan File Menggunakan Linux

  3. Cara Kompres dan Ekstrak File dan Direktori di Linux Menggunakan gzip dan bzip2