Sertleşmek istiyorsanız, * nix personeli gibi , OsX'te yerel olarak rsync komutunu kullanabilirsiniz .
Her şeyden önce, uzak ana bilgisayara ssh ile erişim izniniz olmalıdır. OpenSSH sunucusu Mac OsX'e önceden yüklenmiştir ve herhangi bir ek paket kurmanıza gerek yoktur. Sadece bazı sistem ayarlarını yapmanız gerekir. OpenSSH sunucusunu Mac OS X'te etkinleştirmek için, Sistem Tercihleri'ni açın ve Paylaşım'a tıklayın. Ve SSH etkinleştirmek için Uzaktan Giriş kutusunu işaretleyin daha sonra etiketli radyo düğmesini seçin Tüm Kullanıcılar gelen İçin Erişime İzin bölüm.
Şimdi uzak ana bilgisayara ssh ile erişebilirsiniz.
Şimdi, yerel konuk makinesinden uzak ana bilgisayara ssh üzerinden şifresiz erişim için bir ortak erişim anahtarı oluşturmanız gerekir. Bunun için elinizi biraz kirletmelisiniz. :)
İlk olarak, kimlik doğrulama anahtarınızın olup olmadığını belirleyin. In Terminali , çalıştırın:
sudo ls -la /var/root/.ssh
" İd_dsa " ve id_dsa.pub görürseniz , bu bölümün kalanını atlayabilirsiniz.
İstemci makinede, Terminal'de aşağıdakileri çalıştırın:
sudo ssh-keygen -t dsa -f /private/var/root/.ssh/id_dsa -C "comment about this key"
Yerel konuk makinesinde erişim anahtarı oluşturulduktan sonra, konuğun ortak anahtarını konağın yetkili_key dosyasına kopyalamanız gerekir. Bunu, genel anahtarı yetkili anahtarlar listesine ekleyen basit bir Terminal komutuyla yapabilirsiniz:
sudo cat /private/var/root/.ssh/id_dsa.pub | ssh root@remote_host_address 'cat - >> ~/.ssh/authorized_keys'
Aşağıdaki komut, yerel konuk makinenizdeki kök dosya sisteminizi uzaktaki ana makinenize artımlı bir şekilde yedekleyecektir:
/usr/local/bin/rsync -aNHAXx --protect-args --fileflags --force-change --rsync-path="/usr/local/bin/rsync" / root@remote_host_address:/Volumes/Backup/GuestMachine
Değişiklik senkronizasyonu davranışları için rsync parametrelerini değiştirebilirsiniz. Bu komutu crontab'a eklerseniz senkronizasyon herhangi bir zaman döngüsünde çalıştırılabilir. Örneğin:
sudo crontab -e
crontab'a aşağıdaki satırı ekle:
*/30 * * * * /usr/local/bin/rsync -aNHAXx --protect-args --fileflags --force-change --rsync-path="/usr/local/bin/rsync" / root@remote_host_address:/Volumes/Backup/GuestMachine
Bu, her yarım saatte bir senkronizasyon çalıştırılacak.
Örnek Python betiği:
#!/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()