Sftp বা ftp ব্যবহার করে দূরবর্তী মেশিনে সংরক্ষণাগার সংরক্ষণের কীভাবে তৈরি করবেন?


10

আমি আমার খুব গুরুত্বপূর্ণ একটি ডেটা রিমোট মেশিনে ব্যাকআপ করতে চাই।
বর্তমানে আমি এই কমান্ডটি ব্যবহার করে এটি কেবলমাত্র আমার স্থানীয় মেশিনে সংরক্ষণ করছি:tar -cvjf ~/backups/Backup.tar.bz2 ~/importantfiles/*

আমি এটিকে দূরবর্তী মেশিনে স্থানান্তর করতে অন্য কমান্ডটি ব্যবহার না করা পছন্দ করব, অর্থাত আমি এই কমান্ডটি আপগ্রেড করতে চাই যাতে এটি দূরবর্তী মেশিনে ডেটা স্থানান্তর করতে পারে।

এটি পরে কোনও স্ক্রিপ্টে তৈরির জন্য ডিজাইন করা হয়েছে যা নিজেরাই চালানোর জন্য প্রস্তাবিত হয়, অর্থ কোনও ধরণের প্রয়োজনীয় ব্যবহারকারীর ইনপুট পুরোপুরি গণ্ডগোল করবে!

কিছুটা এইরকম

tar -cvjf sftp://user:pwassword@host/Backup.tar.bz2 ~/importantfiles/*
tar -cvjf  ftp://user:pwassword@host/Backup.tar.bz2 ~/importantfiles/*

নিখুঁত হতে হবে! (পাইপ (ইত্যাদি) নেই, কেবল একটি আদেশ!)


এটি এফটিপি করা প্রয়োজন ? আপনার sshএই যন্ত্রটিতে অ্যাক্সেস নেই?
টেরডন

আমার মেশিনে এসএসএস অ্যাক্সেস নেই। এটি আমি ভাড়া নেওয়া একটি ব্যাকআপ সার্ভার। তাই হ্যাঁ এটা হয়েছে FTP অথবা SFTP- যাবে।
ব্রেইনস্টোন

@BrainStone এসএফটিপি হয় অংশ , SSH এর
kurtm

আমি জানি. তবে এটি এমনভাবে সেট আপ করা হয়েছে যাতে প্রতিটি এসএসএস সংযোগ ইমিডিয়েটলি বন্ধ হয়ে যায়। এসএফটিপি যদিও কাজ করে। আমি জানি এটি একটি জঘন্য সেটআপ তবে এটি এটাই।
ব্রেইনস্টোন

1
এসএফটিপি উপলব্ধ থাকে যখন এসএসএইচ না হয় যদি তারা এসফটিপি অভ্যন্তরীণ সার্ভার ব্যবহার করে এবং আপনার শেলটি / sbin / nologin এ সেট করা থাকে।
গ্রেগ লেভেনথাল

উত্তর:


15

এসএসএইচের জন্য:

tar czf - . | ssh remote "( cd /somewhere ; cat > file.tar.gz )"

এসএফটিপি এর জন্য:

outfile=/tmp/test.tar.gz
tar cvf $outfile . && echo "put $outfile" | sftp remote:/tmp/
Connecting to remote...
Changing to: /tmp/
sftp> put /tmp/test.tar.gz
Uploading /tmp/test.tar.gz to /tmp/test.tar.gz
/tmp/test.tar.gz

আরেকটি এসএফটিপি:

outfile=/tmp/test.tar.gz
sftp -b /dev/stdin remote >/dev/null 2>&1 << EOF
cd /tmp
get $outfile
bye
EOF
echo $?
0

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

দয়া করে ssh, man ssh, man ssh-এজেন্ট, man ssh_config সম্পর্কে আপনার সমস্ত সন্দেহের উত্তর দিন। কোন আর্গুমেন্টের সাহায্যে আপনি কোন ফাইল স্থানীয়ভাবে সংজ্ঞায়িত করেন, তারপরে এটি ssh এর মাধ্যমে দূরবর্তী হোস্টে পাইপ করা হয় এবং আউটপুট ফাইলে পুনঃনির্দেশিত হয়।
jirib

এটি কি পাইপ ছাড়া করা সম্ভব?
ব্রেইনস্টোন

এই কাজ পারবেন না কারণ এটি প্রয়োজন SFTP (হতে কোন SSH অ্যাক্সেস ) অথবা FTP
BrainStone

এফটিপি-র জন্য, মানুষ এলএফটিপি দেখুন। আপনার যদি আরও জটিল পরিস্থিতিগুলির প্রয়োজন হয় তবে 'sftp -b' ব্যবহার করুন এবং কমান্ড সহ একটি ফাইল ব্যবহার করুন বা 'এখানে নথিগুলি' ব্যবহার করুন (<< ইওএফ)।
jirib

3

টার ftp বা sftp বলতে পারে না। এটা তার কাজ নয়। আপনি একা ট্যার দিয়ে এটি করতে পারবেন না। প্রতিটি কাজের জন্য উপযুক্ত সরঞ্জাম ব্যবহার করা এবং তাদের শেলের সাথে একত্রিত করা ইউনিক্স সিস্টেমে কাজ করার স্বাভাবিক উপায়।

সর্বাধিক সুস্পষ্ট সমাধান হ'ল স্থানীয়ভাবে সংরক্ষণাগার তৈরি করা, তারপরে এটি রিমোট মেশিনে অনুলিপি করুন।

আপনার যদি পর্যাপ্ত জায়গা না থাকার কারণে আপনি স্থানীয়ভাবে সংরক্ষণাগারটি তৈরি করতে না চান তবে আপনি একটি পাইপ তৈরি করতে পারেন, এই পাইপটিতে টার লিখতে পারেন এবং পাইপগুলি থেকে পড়তে পারেন এমন একটি (গুলি) ক্লায়েন্ট পাবেন। দুর্ভাগ্যক্রমে, sftp putএকটি পাইপ প্রত্যাখ্যান করে । কিছু এফটিপি ক্লায়েন্ট কাজ করে, উদাহরণস্বরূপ lftp:

mkfifo f
tar -cvjf f ~/importantfiles/* &
sleep 2
lftp -f - <<EOF
open user@host
put f Backup.tar.bz2
EOF
wait
rm f

আপনার এফটিপি পাসওয়ার্ডটি ভিতরে রাখুন ~/.netrc

বিকল্পভাবে, আপনার টার কমান্ডটি প্রত্যন্ত সার্ভারে সরাসরি সংরক্ষণের উপায় রয়েছে তবে আপনার কিছু পূর্ব সেটআপ দরকার। রিমোট সার্ভারটি এসএসএইচএফএস বা কার্ফল্টফেসের উপরে মাউন্ট করুন ।

mkdir -p ~/net/host
sshfs host: ~/net/host
tar -cvjf ~/net/host/Backup.tar.bz2 ~/importantfiles/*
fusermount -u ~/net/host
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.