Jika Anda ingin menjadi hardcore, Anda dapat menggunakan perintah rsync secara native di OsX , seperti * nix staff.
Sebelum semuanya, Anda harus memiliki izin untuk mengakses host jarak jauh dengan ssh. Server OpenSSH sudah diinstal pada Mac OsX dan Anda tidak perlu menginstal paket tambahan apa pun. Hanya perlu melakukan beberapa pengaturan sistem. Untuk mengaktifkan server OpenSSH pada Mac OS X, buka System Preferences dan klik untuk Berbagi. Dan daripada itu, centang kotak Remote Login untuk mengaktifkan SSH, lalu pilih tombol radio berlabel Semua Pengguna dari bagian Perbolehkan Akses Untuk .
Anda sekarang dapat mengakses host jarak jauh dengan ssh.
Sekarang, Anda harus membuat kunci akses publik untuk akses tanpa kata sandi dari mesin tamu lokal ke host jarak jauh lewat ssh. Untuk itu Anda harus sedikit mengotori tangan Anda. :)
Pertama, tentukan apakah Anda sudah memiliki kunci otentikasi. Di Terminal , jalankan:
sudo ls -la /var/root/.ssh
Jika Anda melihat "id_dsa" dan id_dsa.pub , maka Anda dapat melewati bagian ini.
Di mesin klien, jalankan yang berikut di Terminal:
sudo ssh-keygen -t dsa -f /private/var/root/.ssh/id_dsa -C "comment about this key"
Setelah membuat kunci akses di mesin tamu lokal, Anda perlu menyalin kunci publik tamu ke file host_keys resmi. Anda dapat melakukan ini dengan perintah Terminal sederhana yang menambahkan kunci publik ke daftar kunci resmi:
sudo cat /private/var/root/.ssh/id_dsa.pub | ssh root@remote_host_address 'cat - >> ~/.ssh/authorized_keys'
Perintah di bawah ini yang akan melakukan pencadangan tambahan sistem file root Anda di mesin guest lokal ke host jarak jauh Anda:
/usr/local/bin/rsync -aNHAXx --protect-args --fileflags --force-change --rsync-path="/usr/local/bin/rsync" / root@remote_host_address:/Volumes/Backup/GuestMachine
Anda dapat mengubah parameter rsync untuk mengubah perilaku sinkronisasi. Jika Anda menambahkan perintah ini ke crontab , sinkronisasi dapat dijalankan dalam siklus waktu apa pun. Sebagai contoh:
sudo crontab -e
tambahkan baris di bawah ini ke crontab:
*/30 * * * * /usr/local/bin/rsync -aNHAXx --protect-args --fileflags --force-change --rsync-path="/usr/local/bin/rsync" / root@remote_host_address:/Volumes/Backup/GuestMachine
Ini akan menjalankan sinkronisasi dalam setiap setengah jam.
Berikut ini contoh skrip Python:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
Cron automated synchronization script.
Desc: Synchronize remote folder into local machine. Duplicate processes
are disallowed until running process finished.
Usage:
:: Change required variables as _user, _password, _domain etc.
:: Edit crontab
# crontab -e
:: Append line below.
*/30 * * * * python synchronizator.py 2>&1 &
Author: Sencer HAMARAT (RecNes)
E-Mail: sencerhamarat@gmail.com
"""
import shlex
from subprocess import Popen, PIPE
import logging as log
import sys
__author__ = "Sencer HAMARAT"
_user = 'username'
_password = 'password'
_domain = 'example.com'
_expectation = "Enter passphrase for key \'/home/%s/.ssh/id_rsa\':" % _user
_rsync = '/usr/bin/rsync --partial --progress -avvz -e'
_pub_key = '/home/%s/.ssh/id_rsa.pub' % _user
_ssh = '/usr/bin/ssh -i %s' % _pub_key
_remoteDir = '/home/%s/backup/' % _user
_localDir = '/home/%s/backup/' % _user
_command = '%s %s %s@%s:%s %s' % (_rsync, _ssh, _user, _domain, _remoteDir, _localDir)
run_command = shlex.split(_command)
_logFile = "logfile.log"
_logFormat = "%(asctime)s %(levelname)s %(name)s %(process)d %(threadName)s %(module)s:%(lineno)d %(funcName)s() " \
"%(message)s\n"
log.basicConfig(filename=_logFile, level=log.DEBUG, format=_logFormat)
log.debug(u'Command will run: %s' % _command)
try:
running_command = Popen(run_command, stdin=PIPE, stdout=PIPE, stderr=PIPE)
if running_command.poll():
log.debug(repr(running_command.poll()))
sys.exit()
if _expectation in running_command.communicate():
running_command.communicate(_password)
print running_command.communicate()
except Exception as e:
log.debug(repr(e))
finally:
sys.exit()