گرفتن بکاپ از سرور با استفاده از lftp

Submitted by admin on س., 08/22/2017 - 12:23

با هر سیستم عاملی که باشید مطمئنا ftp یکی از بهترین گزینه ها و پر کاربرد ترین روش های بکاپ گیری از سرور هست که برای آن هم برنامه های گرافیکی زیادی وجود دارند مثل filezilla. البته انواع روش ها برای بکاپ گرفتن از هاست و سرور وجود دارد که مطلبی را در این رابطه نوشته بودم که میتوانید آن را نیز مطالعه کنید.

ولی اگر دنبال یک برنامه ftp تحت command line لینوکس باشید، بهترین گزینه شما lftp می باشد. البته می توانید از ftp قدیم هم استفاده کنید ولی lftp دستورات ftp و مدیریت کردن فایل ها را به سطح جدیدی ارتقا داده است.

برای آشنایی با lftp لیست دستورات آن و نحوه ی گرفتن بکاپ از یک هاست را با هم مرور میکنیم.

برای استفاده از lftp نیاز دارید که به هاست تان متصل شوید و دستوراتی که می خواهید را بزنید.

برای این کار دستور زیر را وارد کنید:

lftp -u username,password hostUrl

نتیجه:

lftp archir@backup1.tehranhost.com:/>

تمامی دستوراتی که مربوط به مدیریت کردن فایل ها و ftp می باشد در lftp نیز فعال می باشند و کار میکنند و میتوانید از آنها استفاده کنید، مانند : mkdir , rm , ls , cd , pwd , و ...

lftp دستورات متعددی را فراهم میکند که یکی از پر کاربرد ترین آنها، دستور mirror می باشد که برای همگام سازی یک پوشه از هاست با یک پوشه در سیستم خودتان وجود دارد که میتوانید از آن به صورت زیر استفاده کنید.

mirror path/to/source_directory path/to/target_directory

که در اینجا منظور از source_directory آدرس پوشه ای است که میخواهید آن را دانلود و کپی کنید و منظور از target_directory پوشه ای است که میخواهید فایل هایتان را در آنجا بریزید.

دستور mirror مجموعه ای کامل از تنظیمات شامل می شود که میتوانید از آنها استفاده کنید که لیست آن به صورت زیر است:

-c   , --continue                 continue a mirror job if possible
-e   , --delete                   delete files not present at remote site
-s   , --allow-suid               set suid/sgid bits according to remote site
       --allow-chown              try to set owner and group on files
-n   , --only-newer               download only newer files (-c won't work)
-r   , --no-recursion             don't go to subdirectories
-p   , --no-perms                 don't set file permissions
       --no-umask                 don't apply umask to file modes
-R   , --reverse                  reverse mirror (put files)
-L   , --dereference              download symbolic links as files
-N   , --newer-than FILE          download only files newer than the file
-P   , --parallel[=N]             download N files in parallel
-i RX, --include RX               include matching files
-x RX, --exclude RX               exclude matching files
-I GP, --include-glob GP          include matching files
-X GP, --exclude-glob GP          exclude matching files
-v   , --verbose[=level]          verbose operation
       --use-cache                use cached directory listings
       --Remove-source-files      remove files after transfer (use with caution)
-a                                same as --allow-chown --allow-suid --no-umask

به عنوان مثال گزینه ی  --delete فایل هایی را که در source وجود ندارند و در target هستند را پاک میکند. این کار باعث می شود که فایل هایی که تغییر کرده اند و پاک شده اند بیهوده در بکاپ ما باقی نمانند و باعث نشوند که حجم آن زیاد شود.

یا گزینه ی --parallel[=N]  برای تعیین کردن تعداد همزمان دانلود و آپلود می باشد. گزینه ی --only-newer  برای چک کردن زمان تغییرات فایل ها می باشد. گزینه ی --verbose برای این است که تغییرات و آپلود و دانلود و یا خطاهایی که رخ می دهند را در همان جا لاگ کند و قابل مشاهده باشد. همانند مشاهده درصد پیشرفت انجام یک کار.

با استفاده از همه ی این گزینه ها می توانید دستور mirror را تنظیم کنید و با توجه به نیاز از آن به صورت زیر استفاده کنید:

mirror --delete --verbose --parallel=3 path/to/source_directory path/to/target_directory

نتیجه:

Transferring file `backup-Aug-2-2017-1.tar.gz'
Transferring file `backup-Aug-21-2017-1.tar.gz'
Total: 1 directory, 2 files, 0 symlinks
New: 2 files, 0 symlinks
766315032 bytes transferred in 126 seconds (5.80M/s)
lftp archir@backup1.tehranhost.com:/>

 

تایپ این دستورات و گزینه های آن در هر بار میتواند کمی سخت باشد و اشتباه را بالا ببرد. خوشبختانه lftp دستورات پیچیده تر را نیز میفهمد و میتواند چندین دستور را همزمان اجرا کرد. برای این کار باید از -e استفاده کرد تا lftp به هاست تان متصل بماند تا دستورات را به ترتیب اجرا کند.

lftp -u username,password -e "mirror --delete --verbose --parallel=3 path/to/source_directory path/to/target_directory" hostUrl

در بالا تمامی دستوراتی که در داخل "" قرار دارند به ترتیب اجرا می شوند.

می توانید این دستورات را در داخل یک فایل ذخیره کنید و هر بار که خواستید آنها را با -f آنها را استفاده کنید:

lftp -f /home/user/ftpscript.txt

دستورات و گزینه های دیگری نیز وجود دارد که به قدرت lftp اضافه میکنند و میتوانید از آنها استفاده کنید. مانند تنظیم زمان که در یک ساعت مشخص بکاپ گیری انجام شود:

lftp at 00:00 -u username,password -e "mirror --delete --only-newer --verbose path/to/source_directory path/to/target_directory" ftpsite &

به عنوان مثال دستورات بالا در نیمه شب ساعت 12 اجرا می شوند و علامت & هم دستور را به پس زمینه می فرستد که دیگر نیازی نباشد که پنجره ی command line  خود را باز نگه دارید.

 

اگر زمانی هم بخواهید که فایل های هاست خود را از بکاپ بازیابی کنید کافی است گزینه ی --reverse  را استفاده کنید تا آپلود کردن هم صورت گیرد. در نهایت می توانید با دستور bye و یا دستور quit و یا exit از آن خارج شوید و به command line  خودتون برگردید.

این دستورات و راهنما تقریبا اکثر نیاز ما را برطرف میکند، ولی به صفحه ی man دستور lftp مراجعه کنید تا لیست تمامی گزینه ها و کارهایی که lftp میتواند از پسشن بر بیاید را مطالعه کنید و در مواقعی که نیاز دارید از آنها استفاده کنید.