یک سری فایل و دایرکتوری داشتم که روی هاست دانلود پارس پک بود و باید منتقل میکردم به سرور دیگه ای که اونم هاست دانلود بود .  حجم فایل هام تقریبا 20 گیگ بود برای این کار  اول سرچ زدم تا ابزاری پیدا کنم که بتونه مشخصات 2 تا سرور و بگیره و خودش انتقال انجام بده. فکر کنم ابزار ویندوزی بود برای این کار ولی دوست داشتم با خط ترمینال این کار و انجام بدم دلیلش هم سرعت بالای انتقال فایل بود چون نرم افزار ویندوزی میخواست روی ویندوز ابتدا دنلود کنه بعد اپلود کنه که با وضع اینترنت خونگی مخابرات تهران که اپلود روی 100 کیلوبایت محدود شده روز ها طول میکشید .برای این کار ابتدا نیازه فایل های سرور مبدا و روی سرور دانلود کنیم

wget -r -l 10 --ftp-user='FTP_USER' --ftp-password='FTP_PASSWORD' ftp://ftp.server.com/folder_to_download/*

r- : مشخصه که برای recursive هستش اما نکتش اینه که به صورت پیش فرض با عمق 5 ( نمیدونم ترجمه درست depth چی میشه اینجا ) برای همین با سوییچ -l میگیم با عمق 10 کارشو انجام بده :دی

نکته 1 : اگر هاست دانلود یا سروری که دستری ftp داره بتونید از همه محتویات یک فایل زیپ بسازید که راحت ترین کاره ، با curl هم میشه این کار و انجام داد

نکته 2 : wget از دانلود موازی پشتیبانی نمیکنه و در صورتی که تعداد فایل ها زیاد باشه زمان زیادی بگیره

وقتی که فایل ها دانلود شد با دستور curl شروع به اپلود فایل ها روی سرور جدید میکنیم با فرمت زیر :

   

curl -T $file -u $user:$pass $host

 

اگر در user یا password کاراکتر عجیب غریبی دارید بهتره از "" استفاده کنید . توی سناریو من بعد از دانلود کردن فایل ها tar کردم و به صورت تک فایل اپلود کردم . میتونید با اسکریپت ساده ی بش تمام فایل هارو بدون زیپ کردن هم منتقل کنید، مثلا اگر فقط نیاز دارید فایل های .mp4 رو منتقل کنید میتونید از اسکریپت زیر استفاده کنید و هر جوری نیازه تغییرش بدید :

 

for video in `find ./ -type f -iname '*.mp4'`
do
curl -T $video -u $user:$pass $host
done

Comments powered by CComment