এসএসএইচ স্বয়ংক্রিয় রিমোট ব্যাক আপগুলি


16

আমার দুটি মেশিন রয়েছে, Aএবং B। মেশিনে Assh করতে পারেন BAঅনেক বিনামূল্যে জায়গা আছে। Bএর ডেটা এক ধরণের ঝুঁকিপূর্ণ পরিস্থিতিতে। আমি কীভাবে স্বয়ংক্রিয়ভাবে সমস্ত Bডেটা ব্যাক আপ করব Aএটি মারাত্মক ঘন ঘন হতে হবে না, তবে এটি হাত মুক্ত হওয়া উচিত। প্রতিটি বার Aবুট আপ যথেষ্ট ঘন ঘন হবে। আমি শুনেছি সিঙ্ক এটি করতে পারে।

উত্তর:


11

বেশিরভাগ লিনাক্সের ডিস্ট্রোজে এটি করতে প্রতিদিন আপনার rsyncকমান্ডটি ( @ গাইডোর উত্তর অনুসারে ) কোনও স্ক্রিপ্টে রাখতে এবং স্ক্রিপ্টটি /etc/cron.dailyডিরেক্টরিতে রাখতে সক্ষম হওয়া উচিত। যতক্ষণ anacronইনস্টল করা থাকে (ডিফল্টরূপে এটি নাও হতে পারে) cron.dailyপরবর্তী সময়ে মেশিন বুট করা (পাশাপাশি মেশিনটি স্যুইচ করা থাকলে মাঝরাতে চালানো হবে ) কোনও মিসড জব ধরা পড়বে।

স্ক্রিপ্টের জন্য আপনি কেবল এটি করবেন:

#!/bin/sh
rsync -a user@serverB:/source/folder/ /destination_folder

আপনি -z(সংক্ষেপণ) বিকল্পটি যুক্ত করতে পারেন যদি ব্যাকআপটি ধীর (ইশ) সংযোগের চেয়ে বেশি হয়ে থাকে বা আপনি যদি ব্যান্ডউইথ সংরক্ষণ করতে চান তবে আমার অভিজ্ঞতায় এটি আধুনিক মেশিন / নেটওয়ার্কগুলির সাথে কার্যকারিতা ক্ষতিগ্রস্থ করবে।

আপনি যদি প্রতিটি ব্যাকআপের লগ রাখতে চান তবে আপনি এমন কিছু করতে পারেন:

#!/bin/sh
rsync -av user@serverB:/source/folder/ /destination_folder \
  >/var/log/backup_log 2>&1

এটি ক্রোন জব হিসাবে কাজ করার জন্য দ্রষ্টব্য, আপনার অবশ্যই সার্ভারবিতে লগ ইন করার জন্য সার্ভারএর মূলের জন্য পাসওয়ার্ডহীন এসএসএস স্থাপন করতে হবে । এটি অবশ্যই মূল অ্যাকাউন্ট হতে হবে (যেমন কীগুলি ) কাজগুলি মূল হিসাবে চালিত হয়।/root/.sshcron.daily


অগত্যা যদি আপনি একটি সার্বজনীন কী এবং প্রতি ব্যবহারকারী ক্রোনজবস ব্যবহার করেন।
ব্রায়াম

ব্রাইয়াম, anacronব্যবহারকারীর জন্য প্রতিটি cronকাজ বেছে নেবে না । যদিও আপনি কোনও নির্দিষ্ট ব্যবহারকারী হিসাবে আরএসসিএন চালানোর জন্য স্ক্রিপ্ট থেকে su/ সর্বদা ব্যবহার করতে পারেন sudo। তবে মনে রাখবেন যে কীগুলি আরও সুরক্ষিত অধীনে রাখা হবে /root
গ্রিম

1
আপনি যদি ক্রোন জব ব্যবহার করতে এবং রুট সহ এসএসএস ব্যবহার করতে চান তবে অনুমোদিত_কিগুলি ফাইলের দ্বিতীয় মেশিনে রুট কী করতে পারে তা সীমাবদ্ধ করা অনেক বেশি নিরাপদ।
গাইডো 0

1
@ গুডো, আপনি সার্ভারএতে মূল হওয়ায় কেবল সার্ভারবিতে লগইন করার প্রয়োজন নেই। @ জেনিডি ইতিমধ্যে এখানে কী করবেন সে সম্পর্কে পরামর্শ দিয়েছেন, তবে আপনি কী সমর্থন করছেন তারuser উপর নির্ভর করে কেবল মেশিনবিতে একজন সাধারণ ব্যবহারকারী হতে পারেন ।
গ্রামীণ

1
সম্ভবত আপনার ব্যবহারকারীর severB- এ ফাইলগুলি পড়ার অ্যাক্সেস নেই। যদি এটি হয় তবে আপনাকে এমন একজন ব্যবহারকারী ব্যবহার করতে হবে যা বর্তমান ব্যবহারকারীকে সঠিক গ্রুপগুলিতে যুক্ত করে অথবা ফাইলগুলিতে অনুমতি পরিবর্তন করে সঠিক অনুমতি দেয়। আপনি যদি নিজের সমস্যার মধ্যে ত্রুটিগুলির একটি নমুনা যোগ করেন ls -lএবং আপনার প্রশ্নের মধ্যে কয়েকটি ফাইলের আউটপুট যোগ করেন তবে লোকেরা আরও পরামর্শ দিতে পারে।
গ্রেম

5

আমি ব্যবহার করার পরামর্শ দিতে হবে আরডিফ-ব্যাকআপ । আমি এখন এটি নিজের নিজস্ব ডেটা (দুটি ওয়ার্কস্টেশন, দুটি সার্ভার এবং অন্যের সার্ভারে একটি অ্যাকাউন্ট) প্রতি রাতে স্বয়ংক্রিয় বর্ধিত ব্যাকআপগুলি তৈরি করতে ব্যবহার করি।

আমি এর আগে আরএসসিএনসি ব্যবহার করেছি, তবে এটি আরও সুবিধাজনক হওয়ায় আরডিফ-ব্যাকআপে স্যুইচ করা হয়েছে এবং এটি ভার্চুয়াল মেশিন ডিস্ক চিত্রের মতো বড় ফাইলগুলির বর্ধিত ব্যাকআপ তৈরি করতে পারে। আরডিফ-ব্যাকআপ অনেকটা আমার আগের আরএসআইএনসি ব্যাকআপ স্ক্রিপের মতো, তবে হয়ে গেছে ঠিক হয়ে গেছে

আমি একটি স্ক্রিপ্ট ফাইল করা আছে /etc/cron.daily মেশিন যেখানে ব্যাকআপ সংরক্ষণ করা হয়, যা ভোরে প্রতিদিন একবার rdiff ব্যাকআপ শুরু, এবং দূরবর্তী মেশিন থেকে তথ্য নিয়ে আসে যায়।


4

পূর্ববর্তী সমস্ত জবাব ছাড়াও, এখানে একটি যে এসএসএইচ কীগুলির উপর নির্ভর করে key কীটি দিয়ে লগ ইন করার সময় কী করা যায় তার উপর বিধিনিষেধ রয়েছে।

সার্ভার এ

আপনি যদি একটি পৃথক ব্যবহারকারী তৈরি করেন বা আপনার বিদ্যমান ব্যবহারকারীর নামগুলির একটি ব্যবহার করেন তবে এটির জন্য এটির পক্ষে কম গুরুত্বপূর্ণ, যদিও এটি যদি আমি হয় তবে আমি একটি পৃথক ব্যবহারকারী তৈরি করতাম। আমি bkpuserনীচের আমার উদাহরণগুলিতে উভয় সার্ভারের জন্য ব্যবহারকারীর নাম ব্যবহার করব ।

লগ ইন করার সময় bkpuser, পাসওয়ার্ড ছাড়াই একটি এসএসএইচ কী তৈরি করুন।

সার্ভারে বি

সক্রিয় করুন PubkeyAuthenticationমধ্যে sshd_config

ব্যবহারকারী তৈরি করুন bkpuser। একটি খুব জটিল পাসওয়ার্ড সেট করুন, বা সেই ব্যবহারকারীর জন্য পাসওয়ার্ড লগইন অক্ষম করুন (আপনি কীভাবে এটি করেন তা নির্ভর করে আপনি কোন ইউনিক্স এবং ডিস্ট্রোটি চালাচ্ছেন তার উপর নির্ভর করবে)। পয়েন্টটি হ'ল ব্যবহারকারীর কেবল একটি এসএসএইচ কী দিয়ে লগ ইন করা উচিত। নিশ্চিত করো যেbkpuser সমস্ত ডিরেক্টরি এবং যে ফাইলটি আপনি ব্যাক আপ করতে চান তাতে অ্যাক্সেস রয়েছে।

এ টু ~bkpuser/.ssh/authorized_keysবি তে তৈরি কীটির সার্বজনীন অংশটি অনুলিপি করুন সংযোগের জন্য স্বয়ংক্রিয়ভাবে কমান্ড চালানোর জন্য সম্পাদনা করুন। এই কমান্ডটি শেল স্ক্রিপ্টের পয়েন্টার হওয়া উচিত নয়; পরিবর্তে সরাসরি কীতে শেল স্ক্রিপ্টটি প্রবেশ করান। একটি সীমাবদ্ধতা অন্তর্ভুক্ত করুন যাতে কীটি কেবল সার্ভার এ এবং অন্য কোনও সার্ভার থেকে ব্যবহার করা যায় না। নীচের উদাহরণে, আমি সার্ভার এ আইপি ঠিকানা 10.1.2.3দিচ্ছি এবং আমি ধরে নিচ্ছি যে আমি যে ফাইলগুলি ব্যাকআপ করতে চাই তা সবই নীচে /data

from="10.1.2.3",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,command="cd /data;/usr/bin/tar -cf - *; /usr/bin/logger -t BACKUP -p daemon.info \"INFO: Backup-files on $HOST fetched from ${SSH_CLIENT%% *} by $USER\";" ssh-dss AA.....

সার্ভার এ

আপনি যদি ক্রোন ট্যাবগুলির মধ্যে একটি ব্যবহার করে যা @rebootএন্ট্রিগুলিকে সমর্থন করে , bkpuserকমান্ডের সাথে s ক্রন্টাব এ যেমন একটি এন্ট্রি যুক্ত করুন ssh -i ~bkpuser/.ssh/id_dsa serverB > backup.tar.gz। যদি এটিগুলির অনুমতি না দেয় তবে আপনার পছন্দ মতো যে কোনও সময় সেট করুন - এটি যদি আমার ডেটা হত তবে আমি সম্ভবত এটি প্রতিদিনই করতাম।


2

এসএসএইচ ব্যবহার করে প্রতিদিন সকাল 4 টায় সার্ভার বি সার্ভার এ তে ব্যাক আপ করার সম্পূর্ণ সমাধান এখানে।

সার্ভার বি থেকে সার্ভার এ-তে একটি স্বয়ংক্রিয় এসএসএইচ সংযোগ তৈরি করুন

ssh-keygen -t dsa -b 1024
ssh-copy-id -i ~/.ssh/id_dsa.pub "-p ssh_port root@server_a"

সার্ভার বিতে একটি ব্যাকআপ স্ক্রিপ্ট তৈরি করুন

ন্যানো / রুট / ব্যাকআপ

# !/bin/sh

# Variables loading
HOST="root@server_a"
PORT=22
DIR="/var/backups/server_b"

# Directories creating
ssh -p $PORT $HOST <<EOF
    mkdir -p $DIR/home
    logout
EOF

# Files backing up
rsync -aze "ssh -p $PORT" --delete /home/user $HOST:$DIR/home

chmod 744 / রুট / ব্যাকআপ

সার্ভার বি এ স্বয়ংক্রিয় ব্যাকআপ

crontab -e

0 4 * * * /root/backup > /dev/null

আরও তথ্যের জন্য পৃষ্ঠাগুলি দেখুন লিনাক্স এবং ডেবিয়ান বা উবুন্টু লিনাক্সে কোনও সার্ভারের ব্যাকআপ না রেখে এসএসএইচে সংযুক্ত হন


1

আপনি এটির জন্য rsync ব্যবহার করতে পারেন (বিপরীতে একটি উপায়):

serverA# rsync -avz user@serverB:/path-to-backup.tar.gz /var/backup

কোথায়:

-avz  archive, compress and be verbose

আমি বেশ নিশ্চিতভাবে -aবোঝাচ্ছি -r
শাদুর

আপনি সম্পূর্ণরূপে সঠিক
গাইডো

-1

বিষয়টির ক্রুশটি কীভাবে এটি স্বয়ংক্রিয়ভাবে করা যায় (পাসওয়ার্ড প্রবেশের প্রয়োজন নেই):

  • একটি screenবা tmuxসেশন শুরু করুন
  • এক্সিকিউট eval $(ssh-agent)
  • আপনার কী যুক্ত করুন ssh-add
  • RSSync এর জন্য পতাকা export RSYNC_RSH="ssh -i ~/.ssh/id_rsa ..."
  • সঙ্গে প্রতি 24 ঘন্টা ব্যাকআপ while :; do rsync -av u@h:/p /local; sleep $[24*60*60]; done

পাসওয়ার্ড কম জন্য +1 ssh
গ্রেম

তাই আমি এই সমস্ত একটি স্টার্ট আপ স্ক্রিপ্টে রাখব, তাই না?
পাইরুলেজ

1
আমি মনে করি এখানে "সত্যিই গুরুত্বপূর্ণ প্রশ্ন" শুরু হয় কতটা সুরক্ষা প্রয়োজন? এটি পাসওয়ার্ড দিয়ে বা ছাড়াই না? এটি কেবলমাত্র কাজ করবে যদি 1) এটি বি থেকে করেন, স্থগিত বা হাইবারনেট এ। এটি আপনি যদি এটিকে বন্ধ করেন তবে এটি কাজ করবে না। আপনি যদি পাসওয়ার্ড ছাড়াই করেন তবে আপনি একধরণের "ঝুঁকিপূর্ণ পরিস্থিতি" হয়ে উঠবেন।

RSYNC_SSHএসএসএইচ কীগুলির মানক অবস্থানগুলিতে অনুসন্ধানের জন্য যুক্ত করার দরকার নেই ।
পাভেল rdিমেরদা

1
আমি জানি। আপনি ...বিন্দুগুলিও পর্যবেক্ষণ করেছেন যেখানে আপনি দরকারী যুক্তি যুক্ত করতে পারেন। আপনি আমার সর্বশেষ মন্তব্যটি পড়েন নি যেখানে আমি "সত্যিকারের গুরুত্বপূর্ণ প্রশ্ন" উল্লেখ করেছি সুতরাং আমি কখনও পাসওয়ার্ডহীন কীগুলি দিয়ে তা করব না। আপনার সক্ষম করতে হবে PubkeyAuthenticationএবং কেউ এটি বলে নি।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.