انتقال امن فایل و پشتیبانگیری با SFTP، scp و tar
در این درس ۴ بخش
اتصال به پوسته، فایلهای میزبان را خودکار به دستگاه شما نمیآورد. نوشتههای آزمایشی خودمان را آرشیو میکنیم، بازیابی را میآزماییم و انتقال را یاد میگیریم. محیط تمرین حساب معمولی شما در لینوکس یا Termux است؛ از دادهٔ مهم و سرور عملیاتی استفاده نکنید. در Termux، بستههای openssh، coreutils، tar، gzip و diffutils ابزارهای نمونه را فراهم میکنند. نتیجه باید قابل بررسی باشد: فایل به مقصد درست رسیده و محتوای بازیابیشده با اصل برابر است.
SFTP و انتخاب ابزار متناسب با دستگاه
SFTP انتقال فایل بر بستر SSH است و با FTP ساده تفاوت دارد. برای اتصال، میزبان، پورت SSH، نام کاربری و روش احراز هویت را لازم دارید و اثرانگشت کلید میزبان را مانند ورود SSH بررسی میکنید. دسترسی به پوسته لزوماً وجود یا مجازبودن سرویس SFTP را تضمین نمیکند؛ اگر سرور آن را ارائه ندهد، باید با مسئول آزمایشگاه هماهنگ کنید. رمز یا کلید خصوصی را داخل فایل گزارش و نمونهفرمانهای قابل انتشار قرار ندهید.
در ویندوز، Bitvise SSH Client گزینهای رایگان دارای انتقال گرافیکی SFTP است. نسخهٔ Client را از سایت سازنده بگیرید. پس از اتصال، مسیر محلی و راهدور را از روی نام میزبان و مسیر جاری تشخیص دهید، یک فایل آزمایشی کوچک ارسال و نام، اندازه و محتوای مقصد را بازبینی کنید. ابزار PuTTY برای نشست ترمینال است؛ برنامهٔ همراه آن به نام PSFTP انتقال تعاملی فایل را در خط فرمان انجام میدهد و رابط گرافیکی دوپنجرهای نیست.
در اندروید و iOS میتوانید از SFTP برنامهٔ Termius استفاده کنید؛ صفحهٔ فعلی طرح Starter آن را رایگان معرفی میکند و اشتراک پولی برای این تمرین شرط نیست. محل فایل محلی در موبایل تابع فضای مجاز برنامه و انتخابگر فایل سیستمعامل است؛ وجود یک فایل در برنامهای دیگر به معنی دسترسی خودکار Termius به آن نیست. نام و جای دکمهها را از راهنمای نسخهٔ نصبشده دنبال کنید. برای مسیر کاملاً خط فرمان در اندروید، Termux همراه بستهٔ openssh امکان اجرای scp را میدهد؛ این فرمان در ترمینال راهدور معادل ذخیرهکردن روی گوشی نیست.
جهت انتقال و دام پورت در scp
الگوی scp برابر «مبدأ سپس مقصد» است. فرمانهای بعدی را روی دستگاهی اجرا کنید که فایل محلی روی آن قرار دارد؛ اگر هنوز داخل SSH هستید ابتدا با exit به دستگاه خود برگردید. پوشهٔ مقصد راهدور باید از قبل وجود داشته و برای همان کاربر قابل نوشتن باشد. lab.example.com، learner و مسیر /home/learner/inbox نمونهاند و باید عوض شوند. ابتدا میتوانید با همان حساب وارد شوید، مسیر خانگی واقعی را با pwd ببینید و یک پوشهٔ inbox در خانهٔ آزمایشگاه بسازید.
# Upload from the local device.
scp -P 22 ./notes.tar.gz learner@lab.example.com:/home/learner/inbox/
# Download to a new local filename.
scp -P 22 learner@lab.example.com:/home/learner/inbox/notes.tar.gz ./notes-received.tar.gzپورت در scp با P بزرگ تعیین میشود؛ p کوچک برای حفظ بعضی زمانها و مجوزهاست. در ssh پورت با p کوچک نوشته میشود. دونقطه بعد از میزبان، مسیر راهدور را مشخص میکند؛ حذف آن میتواند معنی مقصد را عوض کند. مسیرهای دارای فاصله به نقلقول نیاز دارند، پس برای نخستین تمرین نام ساده انتخاب کنید. scp ممکن است فایل همنام مقصد را بازنویسی کند؛ نام جدید و پوشهٔ آزمایشی انتخاب کنید. نسخههای جدید OpenSSH برای scp بهطور پیشفرض از SFTP استفاده میکنند؛ برای دورزدن خطا بیدلیل به پروتکل قدیمی برنگردید.
آرشیو کوچک، فهرست محتوا و بازیابی واقعی
کپی یک فایل تنها بخشی از پشتیبانگیری است. اکنون پوشهٔ تازهای میسازیم تا نمونهها با فایلهای قبلی مخلوط نشوند. mktemp با الگوی زیر پوشهای با پسوند متفاوت ایجاد میکند و نامش را در lab میگذارد. دستور tar فقط پوشهٔ notes همین آزمایش را میگیرد؛ آرشیو را داخل پوشهای که آرشیو میشود قرار نمیدهیم. گزینهٔ C بزرگ مسیر مبنای کار را عوض میکند تا نامهای داخل آرشیو نسبی و خوانا باشند.
lab=$(mktemp -d "$HOME/darsavand-transfer.XXXXXX")
mkdir "$lab/notes" "$lab/restore"
printf 'backup practice\n' > "$lab/notes/readme.txt"
tar -czf "$lab/notes.tar.gz" -C "$lab" notes
tar -tzf "$lab/notes.tar.gz"
tar -xzf "$lab/notes.tar.gz" -C "$lab/restore"
cmp "$lab/notes/readme.txt" "$lab/restore/notes/readme.txt"
printf 'comparison status: %s\n' "$?"
printf 'lab directory: %s\n' "$lab"در tar، c ساختن، t فهرستکردن، x استخراج، z فشردهسازی gzip و f نام فایل آرشیو است. فهرست باید notes و فایل داخلش را نشان دهد. cmp در صورت برابری معمولاً چیزی چاپ نمیکند؛ کد خروج صفر نشانهٔ موفقیت مقایسه است. مقدار $? باید بلافاصله پس از همان فرمان خوانده شود. استخراج را در پوشهٔ خالی restore انجام دادیم تا چیزی بازنویسی نشود. این الگو برای آرشیو ساختهشدهٔ خودتان است؛ آرشیو ناشناس را بدون بررسی مسیرها و محتوا روی فایلهای مهم استخراج نکنید.
تمرین، پاسخ و مرز یک پشتیبان قابل اتکا
تمرین: آرشیو آزمایش را با مسیر واقعی چاپشده ارسال، با نامی تازه دریافت و در پوشهٔ خالی دیگری بازیابی کنید. پاسخ شامل مبدأ، مقصد و مقایسهٔ موفق فایل بازیابیشده است؛ پیام پایان انتقال کافی نیست. بدون میزبان راهدور، بازیابی محلی را کامل و جهت دو فرمان scp را توضیح دهید. PSFTP برای همین کار فرمانهای put برای ارسال، get برای دریافت و lcd برای تغییر پوشهٔ محلی دارد.
آرشیو کنار فایل اصلی در همان گوشی یا دیسک با خرابی یا گمشدن دستگاه از بین میرود. برای اطلاعات واقعی، نسخهای جدا از دستگاه، برنامهٔ نگهداری نسخهها و آزمون دورهای بازیابی لازم است. پیش از انتقال دادهٔ حساس، مقصد و مجوز دسترسی را بررسی کنید. برابری نسخهٔ بازیابیشده را بدون حذف نسخهٔ سالم میسنجیم.
منابع رسمی انگلیسی: Bitvise Client و دریافت آن: https://bitvise.com/ssh-client و https://bitvise.com/ssh-client-download ؛ PuTTY و PSFTP: https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html و https://the.earth.li/~sgtatham/putty/latest/htmldoc/Chapter6.html ؛ scp: https://man.openbsd.org/scp ؛ طرحهای Termius: https://www.termius.com/pricing ؛ راهنمای tar: https://www.gnu.org/software/tar/manual/tar.html ؛ ساخت پوشهٔ یکتا: https://www.gnu.org/software/coreutils/manual/html_node/mktemp-invocation.html
تألیف و مثالهای اختصاصی: تحریریه درسآوند. منابع انگلیسی برای بررسی مفاهیم و مطالعهٔ تکمیلی معرفی شدهاند.
متن درسهای عمومی را بدون ورود بخوانید.