লিনাক্সে rsync ব্যবহার করে ব্যাকআপ স্বয়ংক্রিয় করা

  • Rsync শুধুমাত্র পরিবর্তিত অংশগুলো স্থানান্তর করে এবং স্থানীয়ভাবে ও SSH-এর মাধ্যমে পারমিশন ও মেটাডেটা সংরক্ষণ করে কার্যকর ব্যাকআপ নিতে সক্ষম করে।
  • স্ক্রিপ্ট, ক্রন বা সিস্টেমডি টাইমারের সমন্বয় rsync-কে একটি স্বয়ংক্রিয়, আবর্তনশীল এবং প্রায় রক্ষণাবেক্ষণ-মুক্ত ব্যাকআপ সিস্টেমে পরিণত করে।
  • বর্জন, --delete-এর বিচক্ষণ ব্যবহার, পর্যবেক্ষণ এবং পুনরুদ্ধার পরীক্ষার মতো উত্তম অনুশীলনগুলো ব্যাকআপের প্রকৃত নির্ভরযোগ্যতায় পার্থক্য গড়ে দেয়।

লিনাক্সে rsync ব্যবহার করে স্বয়ংক্রিয় ব্যাকআপ তৈরি করা হচ্ছে

আপনি যদি লিনাক্স সার্ভার পরিচালনা করেন অথবা আপনার কম্পিউটারে এমন ডেটা থাকে যা হারানো আপনার জন্য ক্ষতিকর হতে পারে, তাহলে এর ব্যবহার শিখে নিন। ব্যাকআপ স্বয়ংক্রিয় করতে rsync ব্যবহার করুন এটি কার্যত বাধ্যতামূলক। কোনো দামী স্যুট সেট আপ করার বা মালিকানাধীন টুলের উপর নির্ভর করার প্রয়োজন নেই: কয়েকটি সুচিন্তিত কমান্ডের মাধ্যমেই আপনি একটি নির্ভরযোগ্য, কার্যকর এবং সহজে রক্ষণাবেক্ষণযোগ্য ব্যাকআপ সিস্টেম তৈরি করতে পারেন।

এই নির্দেশিকা জুড়ে আপনি দেখতে পাবেন rsync-এর প্রাথমিক বিষয় থেকে শুরু করে উন্নত সম্পাদনা পর্যন্তলোকাল ব্যাকআপ, SSH-এর মাধ্যমে রিমোট ব্যাকআপ, স্ন্যাপশট সহ টাইম মেশিন-স্টাইলের ব্যাকআপ, প্রোডাকশন-রেডি স্ক্রিপ্ট, ক্রন, সিস্টেমডি টাইমার, এক্সক্লুশন, রোটেশন এবং ভেরিফিকেশন। আমাদের দেখুন ব্যাকআপ পদ্ধতির তুলনা একটি কৌশল নির্ধারণ করা। মূল উদ্দেশ্য হলো, আপনি একটি সুস্পষ্ট পরিকল্পনা এবং নির্দেশাবলী নিয়ে নিবন্ধটি শেষ করবেন, যা আপনি বাস্তবে অনুকরণ করতে এবং আপনার পরিবেশের সাথে খাপ খাইয়ে নিতে পারবেন।

rsync কী এবং কেন এটি ব্যাকআপের জন্য এত বেশি ব্যবহৃত হয়?

Rsync হলো একটি কমান্ড-লাইন টুল যা ডিজাইন করা হয়েছে দুটি অবস্থানের মধ্যে ফাইল এবং ডিরেক্টরি সিঙ্ক্রোনাইজ করুনএকই কম্পিউটারে অথবা বিভিন্ন মেশিনের মধ্যে, সাধারণত SSH-এর মাধ্যমে অথবা এর নিজস্ব rsyncd ডেমন ব্যবহার করে।

সাধারণ cp বা scp-এর তুলনায় rsync-এর সুবিধা হলো, এটি একটি স্মার্ট অ্যালগরিদম প্রয়োগ করে। ডিফারেনশিয়াল ব্লক স্থানান্তরএটি উৎস এবং গন্তব্যের মধ্যে তুলনা করে এবং প্রতিবার পুরো ফাইলটি না পাঠিয়ে শুধু পরিবর্তিত অংশগুলো পাঠায়। আপনার যদি প্রচুর ডেটা থাকে এবং আপনি শুধু তার ছোট ছোট অংশ পরিবর্তন করেন, তাহলে এর মাধ্যমে বিপুল পরিমাণ সময় এবং ব্যান্ডউইথ সাশ্রয় হয়।

এছাড়াও, rsync পারে কার্যত সমস্ত মেটাডেটা সংরক্ষণ করুনঅনুমতি, মালিক, গ্রুপ, টাইমস্ট্যাম্প, সিম্বলিক লিঙ্ক, ডিভাইস… এই কারণেই এটি ‘গুরুত্বপূর্ণ’ ব্যাকআপের জন্য এত দরকারি, যেখানে শুধু ফাইলের বিষয়বস্তুই নয়, ফাইল সিস্টেমটি কীভাবে সাজানো আছে সেটাও গুরুত্বপূর্ণ।

আরেকটি গুরুত্বপূর্ণ সুবিধা হলো যে rsync কাজ করে স্থানীয়ভাবে এবং দূরবর্তী উভয় স্থানেআপনি এটি ব্যবহার করে একই সার্ভারে দুটি ফোল্ডার সিঙ্ক্রোনাইজ করতে, রিমোট সার্ভার থেকে আপনার ব্যাকআপ মেশিনে ডেটা আনতে, অথবা SSH ব্যবহার করে রিমোট NAS বা VPS-এ ডেটা পাঠাতে পারেন।

লিনাক্স আরসিঙ্ক

বিভিন্ন ডিস্ট্রিবিউশনে rsync ইনস্টল করে পরীক্ষা করুন।

যদিও অনেক ডিস্ট্রিবিউশনে আগে থেকেই rsync ইনস্টল করা থাকে, তবুও এটি একটি ভালো ধারণা। ইনস্টলেশনটি যাচাই করুন এবং সাম্প্রতিক সংস্করণে আপডেট করুন। আপনার স্বয়ংক্রিয় ব্যাকআপগুলি মাউন্ট করার আগে উৎস এবং গন্তব্য উভয় মেশিনেই এটি করুন।

ডেবিয়ান বা উবুন্টু-ভিত্তিক সিস্টেমে আপনি এর মতোই সহজ একটি কাজ করতে পারেন:

rsync --version
sudo apt update
sudo apt install rsync

RHEL, CentOS, Rocky Linux বা এর থেকে উদ্ভূত অন্যান্য ডিস্ট্রিবিউশনগুলিতে পদ্ধতিটি প্রায় একই রকম হবে, শুধু প্যাকেজ ম্যানেজার পরিবর্তন করতে হবে, কিন্তু মূল ধারণাটি একই থাকবে। নিশ্চিত করুন যে rsync উপলব্ধ এবং হালনাগাদ আছে। উভয় চরম মধ্যে.

rsync --version
sudo dnf install rsync # En sistemas modernos
sudo yum install rsync # En sistemas más antiguos

rsync-এর মৌলিক অপশনগুলো যা আপনি সবসময় ব্যবহার করবেন

যদিও rsync-এর অনেক প্যারামিটার রয়েছে, বাস্তবে ব্যাকআপের ক্ষেত্রে আপনি আপনার ৯০% সময় ব্যয় করবেন... অল্প কিছু বিকল্প সেটা মুখস্থ করা উচিত।

কমান্ডটির সামগ্রিক কাঠামো বেশ সরল, কিন্তু একটি খুঁটিনাটি বিষয় আছে যা অনেক সম্ভাবনা যোগ করে: পাথের শেষে থাকা স্ল্যাশটি এর আচরণ পরিবর্তন করে দেয়।

জেনেরিক সিনট্যাক্স:

rsync ORIGEN DESTINO

মূল পার্থক্যটি নিহিত রয়েছে আপনি সোর্স ডিরেক্টরিকে কীভাবে ব্যবহার করেন তার মধ্যে:

# Copia el directorio como tal dentro del destino
rsync -av /source/dir /backup/

# ডিরেক্টরির শুধুমাত্র বিষয়বস্তু গন্তব্যে কপি করুন
rsync -av /source/dir/ /ব্যাকআপ/

সর্বাধিক ব্যবহৃত কিছু ব্যাকআপ বিকল্প বিশেষভাবে কার্যকরী, কারণ তারা একটি সংক্ষিপ্ত লেখায় অনেক কিছু একত্রিত করে।:

  • -aফাইল মোড। এটি -rlptgoD-এর সমতুল্য (পুনরাবৃত্তিমূলক, যা সিম্বলিক লিঙ্ক, অনুমতি, টাইমস্ট্যাম্প, গ্রুপ, মালিক এবং বিশেষ ফাইল সংরক্ষণ করে)।
  • -v"ভার্বোস" মোড। এটি কী করছে এবং কোন ফাইলগুলো অ্যাক্সেস করছে তা দেখায়।
  • -zস্থানান্তরের সময় ডেটা সংকুচিত করে, যা ইন্টারনেটের মাধ্যমে দূরবর্তী কপির জন্য আদর্শ।
  • -hআকারগুলোকে (এমবি, জিবি…) ‘সুন্দর’ দেখায়, যা মানুষের জন্য একদম উপযুক্ত।
  • -Pকাজের অগ্রগতি এবং আংশিক ফাইলগুলোকে একত্রিত করে, যাতে কাজের অবস্থা বোঝা যায় এবং পুনরায় কাজ শুরু করা যায়।
  • -মুছে ফেলাউৎস স্থানে যে ফাইলগুলো আর বিদ্যমান নেই, সেগুলোকে গন্তব্য স্থান থেকে মুছে দেয় এবং সেগুলোর একটি হুবহু প্রতিরূপ রেখে দেয়।
  • -n / –ড্রাই-রানকোনো কিছু স্পর্শ না করেই কার্য সম্পাদনকে অনুকরণ করে, যা কোনো কিছু নষ্ট না করার জন্য চমৎকার।
  • –বর্জন করুন / –বর্জন-থেকে: এর মাধ্যমে আপনি এমন প্যাটার্ন বা রাউটের সম্পূর্ণ তালিকা বাদ দিতে পারবেন যা আপনি কপি করতে চান না।
  • -লিঙ্ক-ডেস্টপূর্ববর্তী কপির সাথে হার্ড লিঙ্ক তৈরি করে, যা টাইম মেশিন-ধরনের ইনক্রিমেন্টাল ব্যাকআপের ভিত্তি।

ম্যানুয়াল স্থানীয় কপি এবং প্রথম উদাহরণ

যেকোনো কিছু স্বয়ংক্রিয় করার আগে প্রথম ধাপ হলো থাকা স্পষ্ট এবং প্রমাণিত ম্যানুয়াল কপি কমান্ডচলুন এমন কিছু সাধারণ পরিস্থিতি পর্যালোচনা করা যাক যা আমরা পরবর্তীতে স্ক্রিপ্টে ব্যবহার করব।

আপনি যদি আপনার হোম ডিরেক্টরি ক্লোন করতে চান স্থানীয় ব্যাকআপ ডিস্কন্যূনতম কমান্ডটি দেখতে এইরকম হবে:

rsync -av /home/usuario/ /mnt/disco_backup/usuario/

এই rsync আপনার স্ক্যান করে হোম পেজ সম্পূর্ণ করার জন্য অনুমতি, তারিখ এবং কাঠামো সংরক্ষণ করা হয়েছে।এবং শুধুমাত্র যা অনুপস্থিত বা শেষবারের পর থেকে পরিবর্তিত হয়েছে, তাই কপি করে, যা বিষয়টিকে জটিল না করেই একটি অত্যন্ত পরিচ্ছন্ন ইনক্রিমেন্টাল কপি।

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

rsync -av /media/fotos/ /backup/fotos/

যখন সংবেদনশীল সিস্টেম ডেটার কথা আসে, যেমন /etc অথবা /var/wwwএমন একটি হুবহু প্রতিচ্ছবি কপি চাওয়াটা স্বাভাবিক, যা মূল ফাইল থেকে মুছে যাওয়া বিষয়গুলো ব্যাকআপ থেকেও সরিয়ে দেয়। আর এখানেই বহুল পরিচিত ডিলিট অপশনটি কাজে আসে।

rsync -av --delete /var/www/ /backup/www/

rsync linux

SSH ব্যবহার করে রিমোট ব্যাকআপ সুরক্ষিত করুন

rsync-এর আসল কার্যকারিতা তখনই প্রকাশ পায় যখন আপনি এটিকে এর সাথে একত্রিত করেন সার্ভার থেকে কপি পাঠাতে SSH ব্যবহার করুনএইভাবে, আপনি আপনার ডেটা আপনার নেটওয়ার্কের অন্য কোনো নোডে, একটি NAS-এ, বা ইন্টারনেটে একটি VPS-এ সংরক্ষণ করতে পারেন। এর ফলে, আপনি একটিমাত্র ডিভাইসের উপর নির্ভরশীল থাকেন না এবং বিখ্যাত ৩-২-১ নিয়মের (অন্তত একটি অফ-সাইট কপি) একটি অংশও মেনে চলেন।

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

# Empujar datos locales a un servidor remoto de backup
rsync -avz /etc/ backup@servidor-remoto:/backups/etc/

দূরবর্তী সার্ভার থেকে আপনার ব্যাকআপ মেশিনে ডেটা আনা
rsync -avz backup@remote-server:/var/www/ /backups/www/

আরও কিছুটা পরিমার্জিত পরিস্থিতিতে আপনি সামঞ্জস্য করতে পারেন। SSH এনক্রিপশন, পোর্ট, বা কম্প্রেশন সরাসরি rsync থেকে -e ব্যবহার করে, উদাহরণস্বরূপ যদি আপনার সার্ভার একটি ভিন্ন পোর্টে লিসেন করে অথবা আপনি একটি ধীরগতির লিঙ্ক অপ্টিমাইজ করতে চান।

rsync -avz \
-e "ssh -p 2222 -c -o Compression=no" \
/origen/ backup@servidor-remoto:/destino/

দুর্বল সংযোগ বা শেয়ার করা নেটওয়ার্ক থাকলে একটি কার্যকরী কৌশল হলো ব্যবহার করা লিঙ্কটি ওভারলোড হওয়া থেকে বাঁচাতে –bwlimit ব্যবহার করুন এবং একটি বিশাল ব্যাকআপ চালু করার সময় কাউকে ইন্টারনেট সংযোগ বিচ্ছিন্ন রাখবেন না।

rsync -avz --bwlimit=5000 /datos/ backup@servidor-remoto:/backups/datos/

rsync দিয়ে সম্পূর্ণ, ডিফারেনশিয়াল এবং ইনক্রিমেন্টাল ব্যাকআপ

যদিও rsync ইতিমধ্যেই ব্লক লেভেলে ডিফারেনশিয়াল ট্রান্সফার সম্পাদন করে, ব্যাকআপ কৌশলের দৃষ্টিকোণ থেকে এটি বিবেচনা করার মতো। তিন প্রকারের অনুলিপি: পূর্ণ, পার্থক্যমূলক এবং ক্রমবর্ধমানযা আপনি সরাসরি rsync অপশন ব্যবহার করে প্রয়োগ করতে পারেন।

একটি সম্পূর্ণ অনুলিপি তৈরি করা খুবই সহজ: এটি গন্তব্যে উৎসের সমস্ত বিষয়বস্তু পুনরায় তৈরি করে, যা আদর্শ কারণ প্রাথমিক ব্যাকআপ বা একটি পরিষ্কার রেফারেন্স রাখার জন্য.

# Copia completa de un árbol de directorios
rsync -a /ruta/origen/ /ruta/destino/

ডিফারেনশিয়াল কপিং সেই ভিত্তির ওপরই গড়ে ওঠে এবং এর মূল লক্ষ্য হলো গন্তব্যকে উৎসের সাথে সামঞ্জস্যপূর্ণ রাখা, পরিবর্তনগুলো কপি করা এবং যা আর বিদ্যমান নেই তা মুছে ফেলা। আপনি যখন কথা বলেন... তখন সাধারণত এটাই বোঝান। সিস্টেমটির একটি প্রতিবিম্ব রাখুন.

# Copia diferencial, manteniendo el destino idéntico al origen
rsync -a --delete /ruta/origen/ /ruta/destino/

সবচেয়ে আকর্ষণীয় অংশটি হলো 'প্রকৃত' ইনক্রিমেন্টাল ব্যাকআপ, যেখানে সিনক্রোনাইজ করার পাশাপাশি, আপনি ডেটার পুনরাবৃত্তি না ঘটিয়ে তারিখ অনুযায়ী ইতিহাস সংরক্ষণ করেন।এইখানেই –link-dest অপশনটি কাজে আসে, যা অপরিবর্তিত ফাইলগুলোর জন্য পূর্ববর্তী কপির বিপরীতে হার্ড লিঙ্ক তৈরি করে।

# Copia incremental apoyada en una copia previa
rsync -a --link-dest=/ruta/a/copiaprevia \
/ruta/origen/ /ruta/destino-incremental/

এই পদ্ধতিতে, প্রতিটি ব্যাকআপ ফোল্ডারকে একটি সম্পূর্ণ অনুলিপি বলে মনে হয়, কিন্তু অভ্যন্তরীণভাবে একই ফাইলগুলো ডিস্কে ব্লক শেয়ার করে।এর ফলে ব্যবহৃত স্থান ব্যাপকভাবে কমে যায় এবং ঐতিহাসিক স্ন্যাপশটগুলোর মধ্যে সহজে চলাচল করা যায়।

স্ন্যাপশট এবং হার্ড লিঙ্ক সহ টাইম মেশিন স্টাইলের ব্যাকআপ

অনেকে লিনাক্সে সুবিধার অনুকরণ করতে চান তারিখ অনুযায়ী স্ন্যাপশট সহ ম্যাকওএস টাইম মেশিনrsync-এর ক্ষেত্রে --link-dest, সামান্য শেল কোড এবং কিছুটা ব্যবস্থাপনার সমন্বয়ে এটি পুরোপুরি সম্ভব।

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

সেই স্কিমের একটি সাধারণ কমান্ড এইরকম হতে পারে:

rsync -avPh --delete \
--link-dest="$TARGETDIR/current" \
"$SOURCEDIR/$USER/" \
"$TARGETDIR/$USER-$TIMESTAMP"

এরপর একটি স্ক্রিপ্ট সিম্বলিক লিঙ্কটি আপডেট করার কাজটি করে। বর্তমান, যাতে এটি সর্বদা সর্বশেষ স্ন্যাপশটকে নির্দেশ করে।এবং তারিখ অনুযায়ী সাজানো একটি সংক্ষিপ্ত ইতিহাস সংরক্ষণ করা। এর মাধ্যমে, আপনি যে ফোল্ডারটিতে আগ্রহী, সেখানে প্রবেশ করেই পুরোনো কপিগুলো ব্রাউজ করতে পারবেন।

স্বয়ংক্রিয়করণ স্বাভাবিকভাবেই আসে: আপনি স্ক্রিপ্টটি কোনো এক জায়গায় সংরক্ষণ করেন যেমন /usr/local/bin/rsync-time-machine এবং আপনার সুবিধামতো সময়ে ক্রনের মাধ্যমে এটি প্রতিদিন চালানোর জন্য সময়সূচী নির্ধারণ করুন।

0 5 * * * bash /usr/local/bin/rsync-time-machine

দৈনিক ভিত্তিতে ক্রন (cron) ব্যবহার করে ব্যাকআপ স্বয়ংক্রিয় করুন।

এমন একটা পর্যায় আসে যখন হাতে লিখে অনুলিপি করার আর কোনো মানে হয় না; তখন স্বাভাবিক কাজ হলো cron ব্যবহার করে ব্যাকআপের সময়সূচী নির্ধারণ করুন। যাতে সেগুলো ব্যস্ততাহীন সময়ে (যেমন খুব ভোরে) স্বয়ংক্রিয়ভাবে চলে এবং আপনি মাঝে মাঝে লগগুলো পরীক্ষা করা ছাড়া এগুলোর কথা ভুলে থাকতে পারেন।

প্রক্রিয়াটি সবসময় একই: আপনি এমন একটি স্ক্রিপ্ট প্রস্তুত করেন যা সমস্ত অপশন (বর্জন, লগ ইত্যাদি) সহ সম্পূর্ণ কপিটি তৈরি করে, সেটিকে চালানোর অনুমতি দেন এবং উপযুক্ত ব্যবহারকারীর ক্রনট্যাবে যুক্ত করেন, অথবা যদি পুরো সিস্টেমকে প্রভাবিত করার প্রয়োজন হয় তবে রুটের ক্রনট্যাবে যুক্ত করেন।

স্থানীয়ভাবে কপি করার জন্য একটি সহজ স্ক্রিপ্টের উদাহরণ হতে পারে:

#!/bin/bash
SOURCE_DIR="/home"
BACKUP_DIR="/backup/home"
LOG_FILE="/var/log/backup/rsync-local.log"
DATE=$(date +"%Y-%m-%d %H:%M:%S")

mkdir -p «$BACKUP_DIR» «$(dirname «$LOG_FILE»)»
echo "স্থানীয় ব্যাকআপ শুরু হয়েছে" >> "$LOG_FILE"

rsync -av –delete
–বর্জন='*.tmp' \
–exclude='.cache' \
–exclude='Downloads/*' \
«$SOURCE_DIR/» «$BACKUP_DIR/» >> «$LOG_FILE» 2>&1

যদি ; তাহলে
echo » ব্যাকআপ সফলভাবে সম্পন্ন হয়েছে» >> «$LOG_FILE»
আর
echo » ত্রুটিসহ ব্যাকআপ» >> «$LOG_FILE»
fi

একবার আপনি স্ক্রিপ্টটি প্রবেশ করিয়ে ফেললে, উদাহরণস্বরূপ, /usr/local/bin/rsync-local-backup.sh এবং এটিকে এক্সিকিউটেবল হিসেবে চিহ্নিত করে, আপনি এটিকে ক্রনে যুক্ত করেন যাতে এটি একটি নির্দিষ্ট সময়ে চলে।

sudo chmod +x /usr/local/bin/rsync-local-backup.sh
sudo crontab -e

ক্রনট্যাবের ভিতরে আপনি এইরকম কিছু রাখতে পারেন:

0 2 * * * /usr/local/bin/rsync-local-backup.sh

সিস্টেমডি টাইমার: ক্রনের একটি আধুনিক বিকল্প

আধুনিক ব্যবস্থায় এটি প্রায়শই লাভজনক cron-এর পরিবর্তে systemd টাইমার ব্যবহার করুনবিশেষ করে যদি আপনি পরিষেবাগুলিকে আরও ভালোভাবে সমন্বিত করতে, নেটওয়ার্ক নির্ভরতা পরিচালনা করতে, অথবা journalctl-এ কেন্দ্রীভূত লগ রাখতে চান।

মূল ধারণাটি হলো এমন একটি সার্ভিস নির্ধারণ করা যা আপনার ব্যাকআপ স্ক্রিপ্টটি চালাবে এবং একটি টাইমার যা নির্দেশ করবে কখন এটি চালাতে হবে। সার্ভিসটি দেখতে অনেকটা এরকম হতে পারে:


Description=Rsync Backup Service
After=network-online.target
Wants=network-online.target

টাইপ করুন = oneshot
ExecStart=/usr/local/bin/rsync-remote-backup.sh
ব্যবহারকারী=মূল
স্ট্যান্ডার্ড আউটপুট = জার্নাল
স্ট্যান্ডার্ডএরর=জার্নাল
টাইমআউটসেকেন্ড=৭২০০

WantedBy = multi-user.target

এবং সংশ্লিষ্ট টাইমারটি নিম্নরূপভাবে সংজ্ঞায়িত করা হবে, একটির জন্য প্রতিদিন রাত ২টায় ব্যাকআপ কিছুটা এলোমেলোভাবে, যাতে একবারে সবকিছুকে ছাপিয়ে না যায়:


Description=Daily Rsync Backup Timer
Requires=rsync-backup.service

OnCalendar=*-*-* ০২:০০:০০
স্থায়ী = সত্য
র‍্যান্ডমাইজড ডিলে সেকেন্ড = ১০ মিনিট

WantedBy=timers.target

এর পরে, শুধু systemd পুনরায় লোড করা, টাইমার সক্রিয় করা এবং এটি সঠিকভাবে প্রোগ্রাম হচ্ছে কিনা তা যাচাই করা বাকি থাকে। সার্ভিস লগ থেকে দেখা যায় যে, সময় হলে কপিগুলো চালু করা হয়।.

sudo systemctl daemon-reload
sudo systemctl enable --now rsync-backup.timer
systemctl list-timers
journalctl -u rsync-backup.service

দৈনিক, সাপ্তাহিক এবং মাসিক ভিত্তিতে পর্যায়ক্রমিক ব্যাকআপের ব্যবস্থা করুন।

যদি আপনি একটিমাত্র স্থির অনুলিপির চেয়ে আরেকটু বিশদ কিছু চান, তাহলে আপনি একটি কাঠামো তৈরি করতে পারেন। পর্যায়ক্রমিক ব্যাকআপ: দৈনিক, সাপ্তাহিক এবং মাসিকজায়গা বাঁচাতে এবং পুরোনো ফাইল খুঁজে বের করে পরিষ্কার করতে হার্ড লিঙ্ক ব্যবহার করা হয়।

একটি প্রচলিত পদ্ধতিতে একটি বর্তমান ডিরেক্টরি থাকে যা প্রতিবার rsync দিয়ে আপডেট করা হয় এবং তারপর দিনের উপর নির্ভর করে দৈনিক, সাপ্তাহিক ও মাসিক ফোল্ডারগুলোতে হার্ড লিঙ্কসহ সেই ট্রি-টি ক্লোন করা হয়।

#!/bin/bash
SOURCE_DIR="/var/www"
BACKUP_ROOT="/backup/www"
CURRENT="$BACKUP_ROOT/current"
DAILY="$BACKUP_ROOT/daily"
WEEKLY="$BACKUP_ROOT/weekly"
MONTHLY="$BACKUP_ROOT/monthly"
DATE=$(date +%Y%m%d)
DOW=$(date +%u)
DOM=$(date +%d)

mkdir -p «$CURRENT» «$DAILY» «$WEEKLY» «$MONTHLY»

rsync -av -delete -link-dest=»$CURRENT» \
«$SOURCE_DIR/» «$CURRENT/»

&& cp -al «$CURRENT» «$DAILY/$DATE»
&& cp -al «$CURRENT» «$WEEKLY/$DATE»
&& cp -al «$CURRENT» «$MONTHLY/$DATE»

find «$DAILY» -maxdepth 1 -type d -mtime +7 -exec rm -rf {} \;
find «$WEEKLY» -maxdepth 1 -type d -mtime +28 -exec rm -rf {} \;
find «$MONTHLY» -maxdepth 1 -type d -mtime +365 -exec rm -rf {} \;

এই সিস্টেমের মাধ্যমে আপনার কাছে আছে একটি মোটামুটি যুক্তিসঙ্গত ঐতিহাসিক জানালা ডিস্কটি সম্পূর্ণ কপি দিয়ে পূর্ণ না করেই, এবং প্রতিটি স্ন্যাপশট একটি সাধারণ ফোল্ডারের মতো নেভিগেটযোগ্য থাকে।

যদি আপনার ডেটা দ্রুত পরিবর্তিত হয় বা আকারে খুব বড় হয়, তাহলে ডেটাবেস বা ভার্চুয়াল মেশিনের সামঞ্জস্যতা নিশ্চিত করতে আপনি ডেটা ধরে রাখার সময়কাল ও ব্যবহারের পুনরাবৃত্তি সমন্বয় করতে পারেন, অথবা এটিকে LVM বা ZFS স্ন্যাপশটের সাথেও যুক্ত করতে পারেন।

আপনার ব্যাকআপগুলো কার্যকর কিনা তা পর্যবেক্ষণ করুন, যাচাই করুন এবং খুঁজে বের করুন।

প্রতিদিন ব্যাকআপ টাস্ক চালানোটা দারুণ, কিন্তু যদি কেউ ফলাফল পরীক্ষা না করে এটা আপনার খুব একটা কাজে আসবে না। শেষ ব্যাকআপটি কখন এবং আদৌ করা হয়েছিল কিনা, তা জানার জন্য কিছু প্রাথমিক পর্যবেক্ষণ ব্যবস্থা চালু করা জরুরি।

একটি সহজ কৌশল হলো, প্রতিবার একটি ব্যাকআপ সফলভাবে সম্পন্ন হলে গন্তব্য ফোল্ডারে একটি ছোট চিহ্ন রেখে দেওয়া, যেমন তারিখসহ একটি .last-backup-success ফাইল। এরপর, ফাইলটি খুব পুরোনো হয়ে গেলে একটি এক্সটার্নাল স্ক্রিপ্ট, বা এমনকি একটি Nagios/Icinga চেকও আপনাকে সতর্ক করতে পারে।

MARKER="/backup/www/.last-backup-success"
if ; then
echo "Marcador de backup no encontrado"
exit 1
fi

আরেকটি স্বাস্থ্যকর অভ্যাস হলো পরীক্ষা করা ত্রুটি বা অস্বাভাবিক স্থানান্তর হারের জন্য rsync লগ পরীক্ষা করুন।একটি স্ক্রিপ্ট যা 'ফাইলের সংখ্যা', 'মোট আকার', 'স্পিডআপ' এবং এই জাতীয় পরিসংখ্যান সংগ্রহ করে, তা আপনাকে বর্তমান পরিস্থিতি সম্পর্কে একটি দ্রুত ধারণা দেয়।

আর অবশ্যই, মাঝে মাঝে এতে অভ্যস্ত হয়ে যাওয়াই আসল পার্থক্য গড়ে দেয়। সত্যিকারের পুনরুদ্ধার করতেএকটি নির্দিষ্ট ফাইল নিন, সেটির গতকাল বা গত সপ্তাহের একটি সংস্করণ পুনরুদ্ধার করুন এবং পরীক্ষা করে দেখুন যে সেটি সঠিকভাবে খুলছে কি না। এটাই নিশ্চিত হওয়ার একমাত্র উপায় যে, যদি কোনো একদিন সবকিছু গোলমাল হয়ে যায়, আপনার ব্যাকআপগুলো সেই পরিস্থিতি সামাল দিতে পারবে।

যদি আপনি এই সমস্ত অংশগুলিকে একত্রিত করেন—একটি সু-কনফিগার করা rsync, cron বা systemd দিয়ে অটোমেশন, বিচক্ষণ রোটেশন, মনিটরিং এবং রিস্টোর টেস্টিং—তাহলে আপনি যা পাবেন তা হলো একটি শক্তিশালী, নমনীয় এবং সাশ্রয়ী লিনাক্স ব্যাকআপ সিস্টেমযা আপনাকে সুবিধা বা নির্ভরযোগ্যতা ত্যাগ করতে বাধ্য না করেই ফ্রি সফটওয়্যারের সুবিধাগুলোর পূর্ণ সদ্ব্যবহার করে।

সম্পর্কিত নিবন্ধ:
উইন্ডোজে ক্রমবর্ধমান ব্যাকআপ তৈরির সম্পূর্ণ নির্দেশিকা

পছন্দের উৎস হিসেবে যোগ করুন