scp এবং rsync: ফাইল কপি করা
আপনার কম্পিউটার ও সার্ভারের মধ্যে ফাইল স্থানান্তরের দুটি কমান্ড: কখন scp যথেষ্ট, rsync কী কাজে লাগে, এবং ট্রেইলিং স্ল্যাশ দিয়ে অন্যের ডিরেক্টরি ওভাররাইট না করার উপায়।
আপডেট: ২৩ আগস্ট, ২০২৬
একবারের এডিটের জন্য গ্রাফিক্যাল ক্লায়েন্ট সুবিধাজনক, তবে ডিপ্লয়মেন্ট ও ব্যাকআপ একটি কমান্ডেই করা সহজ।
scp: একবারের কপি
সিনট্যাক্স cp-এর মতোই, শুধু মেশিনের ঠিকানা যোগ হয়:
scp dump.sql root@203.0.113.10:/root/
scp root@203.0.113.10:/var/log/nginx/error.log ./
scp -r ./site root@203.0.113.10:/var/www/
প্রথম কমান্ডটি একটি ফাইল পাঠায়, দ্বিতীয়টি একটি ফাইল ফিরিয়ে আনে, তৃতীয়টি পুরো একটি ডিরেক্টরি কপি করে (-r)।
SSH যদি ভিন্ন পোর্টে চলে, তবে বড় হাতের -P দিয়ে তা উল্লেখ করুন:
scp -P 2222 dump.sql root@203.0.113.10:/root/
~/.ssh/config ফাইল থাকলে কমান্ডগুলো ছোট হয়ে যায়: scp dump.sql vds:/root/।
rsync: সিঙ্ক্রোনাইজেশন
rsync শুধু পার্থক্যগুলো ট্রান্সফার করে, বাধাগ্রস্ত ট্রান্সফার আবার শুরু করতে পারে এবং অগ্রগতি দেখাতে পারে। বারবার ডিপ্লয়মেন্টের জন্য এটি অনেক গুণ দ্রুত।
rsync -avz --progress ./site/ root@203.0.113.10:/var/www/example.com/
| ফ্ল্যাগ | কী করে |
|---|---|
-a | পারমিশন, টাইমস্ট্যাম্প, লিংক সংরক্ষণ করে |
-v | ফাইলের তালিকা দেখায় |
-z | স্ট্রিম কমপ্রেস করে |
--progress | ট্রান্সফারের অগ্রগতি দেখায় |
--delete | আপনার কাছে যা নেই, মেশিন থেকে তা মুছে ফেলে |
--exclude | অপ্রয়োজনীয় সবকিছু বাদ দেয় |
পরিষ্কার ডিপ্লয়মেন্টের একটি উদাহরণ:
rsync -avz --delete \
--exclude '.git' --exclude 'node_modules' --exclude '.env' \
./site/ vds:/var/www/example.com/
মেশিন থেকে আপনার দিকে একটি কপি আনুন:
rsync -avz vds:/root/backup-2026-08-23.tar.gz ./backups/
সোর্সের শেষে স্ল্যাশ মানে “ডিরেক্টরির ভেতরের বিষয়বস্তু”।
./site/ফাইলগুলো টার্গেটের ভেতরে রাখে,./siteটার্গেটের ভেতরে একটিsiteসাবডিরেক্টরি তৈরি করে। সব “হারানো” ডিপ্লয়মেন্টের অর্ধেকের কারণ এটিই।
--delete নিয়ে সাবধান
--delete ফ্ল্যাগ মেশিনের ডিরেক্টরিকে আপনার ডিরেক্টরির হুবহু কপি বানায়: অতিরিক্ত যা কিছু আছে, জিজ্ঞাসা না করেই মুছে যায়। আগে একটি ড্রাই রান করুন:
rsync -avzn --delete ./site/ vds:/var/www/example.com/
-n ফ্ল্যাগ শুধু দেখায় কী ঘটবে। নিশ্চিত হলে n বাদ দিন।
গতি
ডিস্কের গতি প্রতি টিয়ারে সীমিত: প্রতি কোর-এ রাইট 60 MB/s (60-এর কম নয় এবং 400-এর বেশি নয়), রিড তার দ্বিগুণ, আর সীমার তিন গুণ বার্স্ট 30 সেকেন্ড টেকে। নেটওয়ার্ক ব্যান্ডউইথ সর্বোচ্চ 500 Mbit/s। VDS-1-এ বড় আর্কাইভ আপলোড করলে রাইট সীমায় পৌঁছে যাবে, এটাই স্বাভাবিক, ব্যর্থতা নয়। কী ঘটছে তা দেখতে:
df -h
iostat -x 2
সাধারণ ভুল
| লক্ষণ | কারণ |
|---|---|
Permission denied | আপনি এমন ডিরেক্টরিতে লিখছেন যা আপনার ইউজারের নয় — root হিসেবে লগ ইন করুন বা মালিকানা বদলান |
No such file or directory | মেশিনে ডিরেক্টরিটি নেই এবং scp তা তৈরি করে না: আগে mkdir -p চালান |
| ফাইলগুলো এক ধাপ উপরে গিয়ে পড়েছে | পাথে শেষের স্ল্যাশ নেই বা বাড়তি আছে |
rsync: command not found | দুই দিকেই প্যাকেজ ইনস্টল করুন: apt install -y rsync |
| ডিপ্লয়মেন্টের পর সাইট 403 দেয় | মালিকানা সেট করা নেই: chown -R www-data:www-data /var/www/example.com |
গ্রাফিক্যাল ক্লায়েন্ট পছন্দ হলে দেখুন SFTP-এর মাধ্যমে ফাইল ট্রান্সফার।