আপনি হার্ডকোর যেতে চান, আপনি ব্যবহার করতে পারেন rsync মধ্যে স্থানীয়ভাবে কমান্ড OSX * স্নো কর্মীদের মত।
সবকিছুর আগে, আপনার কাছে অবশ্যই ssh দ্বারা দূরবর্তী হোস্টে অ্যাক্সেসের অনুমতি থাকতে হবে। ওপেনএসএইচ সার্ভারটি ম্যাক ওএসএক্স-এ পূর্বেই ইনস্টল করা আছে এবং আপনার কোনও অতিরিক্ত প্যাকেজ ইনস্টল করার দরকার নেই। কিছু সিস্টেম সেটিংস করা দরকার। ম্যাক ওএস এক্সে ওপেনএসএইচ সার্ভার সক্ষম করতে, সিস্টেম পছন্দগুলি খুলুন এবং ভাগ করে নেওয়ার জন্য ক্লিক করুন। এবং এর চেয়ে, এসএসএইচ সক্ষম করতে রিমোট লগইন বাক্সটি চেক করুন, তারপরে সমস্ত ব্যবহারকারীদের অ্যাক্সেসের অনুমতি দিন বিভাগ থেকে রেডিও বোতামটি নির্বাচন করুন ।
আপনি এখন ssh দ্বারা দূরবর্তী হোস্টে অ্যাক্সেস করতে পারেন।
এখন, আপনাকে অবশ্যই স্থানীয় অতিথি মেশিন থেকে দূরবর্তী হোস্টে এসএসএসের পাসওয়ার্ডহীন অ্যাক্সেসের জন্য একটি সর্বজনীন অ্যাক্সেস কী তৈরি করতে হবে। তার জন্য আপনাকে অবশ্যই নিজের হাতটি কিছুটা নোংরা করতে হবে। :)
প্রথমে আপনার কাছে ইতিমধ্যে প্রমাণীকরণ কী রয়েছে কিনা তা নির্ধারণ করুন। ইন টার্মিনাল , সঞ্চালন করুন:
sudo ls -la /var/root/.ssh
আপনি যদি "id_dsa" এবং id_dsa.pub দেখতে পান তবে আপনি এই বিভাগটির বাকি অংশটি এড়িয়ে যেতে পারেন।
ক্লায়েন্ট মেশিনে, টার্মিনালে নিম্নলিখিতটি চালান:
sudo ssh-keygen -t dsa -f /private/var/root/.ssh/id_dsa -C "comment about this key"
স্থানীয় অতিথি মেশিনে অ্যাক্সেস কী তৈরি করার পরে, আপনাকে অতিথির পাবলিক কীটি হোস্টের অনুমোদিত_কিজ ফাইলটিতে অনুলিপি করতে হবে। আপনি সরল টার্মিনাল কমান্ড দিয়ে এটি করতে পারেন যা অনুমোদিত কীগুলির তালিকায় পাবলিক কী সংযোজন করে:
sudo cat /private/var/root/.ssh/id_dsa.pub | ssh root@remote_host_address 'cat - >> ~/.ssh/authorized_keys'
নীচের কমান্ডটি আপনার দূরবর্তী হোস্টে স্থানীয় অতিথি মেশিনে আপনার মূল ফাইল সিস্টেমের বর্ধিত ব্যাকআপ সম্পাদন করবে:
/usr/local/bin/rsync -aNHAXx --protect-args --fileflags --force-change --rsync-path="/usr/local/bin/rsync" / root@remote_host_address:/Volumes/Backup/GuestMachine
পরিবর্তন সিঙ্ক্রোনাইজেশন আচরণগুলির জন্য আপনি আরএসসিএনসি এর পরামিতিগুলি পরিবর্তন করতে পারেন। যদি আপনি এই কমান্ডটি ক্রন্টবায় যোগ করেন তবে যেকোন সময় চক্রের মধ্যে সিঙ্ক্রোনাইজেশন চালানো যেতে পারে। উদাহরণ স্বরূপ:
sudo crontab -e
ক্রন্টাবের নীচে লাইন যুক্ত করুন:
*/30 * * * * /usr/local/bin/rsync -aNHAXx --protect-args --fileflags --force-change --rsync-path="/usr/local/bin/rsync" / root@remote_host_address:/Volumes/Backup/GuestMachine
এটি প্রতি আধা ঘণ্টার মধ্যে চলমান সিঙ্ক্রোনাইজেশন হবে।
পাইথন লিপিটির নমুনা এখানে:
#!/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()