این مقاله به شما نحوه انتقال فایل ها بین دو سرور لینوکسی با استفاده از دستورات nc (ابزار شبکه) و pv (مخفف Pipe Viewer) را شرح خواهیم داد. قبل از اینکه به اصل موضوع بپردازیم اجازه دهید درباره اینکه این دو دستور چه هستند توضیحاتی بدهیم.
nc مخفف netcat بوده و اغلب بعنوان "چاقوی ارتش سوییس" به آن اشاره می شود و یکی از ابزارهای شبکه است که برای دیباگ و بررسی شبکه و همچنین برای ایجاد ارتباطات شبکه ای با استفاده از TCP یا UDP، اسکن پورت، انتقال فایل و امور بیشمار دیگر مورد استفاده قرار میگیرد. این ابزار ایجاد شده تا یک back-end غیر مستقل باشد و بخصوص در برنامه ها و اسکریپت ها مورد استفاده قرار گیرد، از آنجایی که این ابزار میتواند اغلب هر نوعی از ارتباطات شبکه ای را ایجاد کند و شامل تعدادی قابلیت ها ی ساختاری میباشد.
pv که مخفف Pipe viewer است در حقیقت یک ابزار بر پایه ترمینال بوده و برای مانیتور کردن عملیات ارسال data از طریق یک pipeline مورد استفاده قرار میگیرد. این ابزار برای کاربر امکان دیدن عملیات مربوط به دیتا به همراه progress bar (نوار مربوط به پیشروی عملیات انتقال)، مدت زمان سپری شده، درصد انتقال در لحظه، میزان throughput جاری، دیتای کل انتقال یافته و میزان زمان تخمین زده برای تکمیل عملیات را فراهم میآورد.
همچنین توصیه میشود مطالعه کنید :
دستور پیشرفته Copy در لینوکس - نمایش میزان پیشرفت کپی فایل ها و فولدرهای بزرگ
نحوه مانیتور کردن عملیات Data با استفاده از دستور PV (مخفف Pipe Viewer)
pscp - انتقال/کپی فایل ها به چندین سرور لینوکس با استفاده از تنها یک شل
10 نمونه از دستورات sFTP برای انتقال فایل ها روی سرورهای لینوکس راه دور
10 نمونه از دستور scp برای انتقال فایل ها و فولدرها در لینوکس
10 مثال از دستور Rsync در لینوکس
اکنون نحوه ترکیب دو دستور برای انتقال فایل ها بین دو کامپیوتر لینوکسی را با هم مشاهده میکنیم. برای این منظور در این مقاله ما از دو ماشین لینوکسی با ip آدرس های زیر استفاده میکنیم.
نکته : من شدیدا توصیه میکنم که برای ارسال و دریافت Data از بستر شبکه public از netcat استفاده نکنید با توجه به اینکه این دستور از هیچ گونه لاگین یا اهراز هویتی استفاده نمیکند تنها تجهیزات مورد نیازش ip کلاینت و شماره پورت مورد نظر میباشد و دیتا به شکل غیر امن از بستر شبکه منتقل میشود. بنابراین برای کاربران پیشرفته لینوکسی توصیه میشود و ترجیح داده میشود که روی شبکه محافظت شده لوکال استفاده شود.
در شرایطی که امنیت دیتا بسیار مهم است همیشه از rsync روی SSH یا scp روی SSH استفاده کنید.
اکنون اجازه دهید با مثال های ساده واقعی از دستورات nc و pv آغاز کنیم اما قبل از آن هر دو ابزار باید روی سیستم تان نصب باشند. در صورتی که نصب نبودند آنها را با استفاده از ابزار پکیج منیجر مربوط به توزیع لینوکسی خود و همانند دستورات زیر نصب کنید.
نحوه انتقال فایل ها بین 2 ماشین لینوکسی
فرض میکنیم که شما میخواهید یک فایل بزرگ به نام Elastix-4.0.74-Stable-x86_64-bin-10Feb2016.iso از کامپیوتر A به کامپیوتر B و از طریق شبکه ارسال کنید. سریع ترین راه برای رسیدن به این هدف استفاده از دستور nc (یکی از ابزارهای شبکه) میباشد که فایل ها را از طریق شبکه TCP انتقال میدهد. و همچنین استفاده از دستور pv برای مانیتور کردن عملیات ارسال data و همچنین ابزار tar برای فشرده سازی دیتا به منظور بهبود سرعت انتقال میباشد.
روی ماشین لینوکسی A
ابتدا به ماشین A با ip آدرس 192.168.25.4 لاگین میکنیم سپس دستور زیر را اجرا کنید.
اجازه دهید آپشن های استفاده شده در دستور بالا را شرح دهیم.
tar -zcf : دستور tar یک ابزار tape archive میباشد که برای compress/uncompress کردن فایل های آرشیو مورد استفاده قرار میگیرد. آپشن -c یک فایل آرشیو .tar جدید ایجاد میکند، -f نوع فایل آرشیو را مشخص میکند و -z آرشیو را از طریق gzip فشرده میکند.
Elastix-4.0.74-Stable-x86_64-bin-10Feb2016.iso : نام فایلی که از طریق شبکه منتقل خواهد شد را مشخص میکند که میتواند فایل یا مسیر یک فایل باشد.
pv : دستور Pipe Viwer برای مانیتور کردن عملیات ارسال Data
nc -l -p 5555 -q 5 : ابزار شبکه ای که برای ارسال و دریافت دیتا روی بستر TCP استفاده میشود. آپشن -l برای listen کردن یک ارتباط ورودی استفاده میشود، آپشن -p 5555 پورت مبداء مورد استفاده را مشخص میکند و -q 5 تعداد ثانیه های انتظار را مشخص کرده و بعد از آن زمان بسته میشود.
روی ماشین لینوکسی B
اکنون به ماشین B با ip آدرس 192.168.25.76 لاگین کرده و دستور زیر را اجرا کنید.
فایل مورد نظر به کامپیوتر B منتقل میشود و شما قادر خواهید بود که میزان سرعت عملیات اجرایی را مشاهده کنید. هزاران کاربرد بی نظیر دیگر از ابزار های nc (که هنوز پوشش داده نشده اما به زودی درباره آنها خواهیم نوشت) و همچنین pv (ما قبلا یک مقاله با جزئییات درباره آن آماده کردیم که از اینجا میتوانید آنرا مطالعه کنید) موجود است. اگر شما نیز مثالهای دیگری از این دستورات میدانید با ما در همین پست به اشتراک بگذارید.
nc مخفف netcat بوده و اغلب بعنوان "چاقوی ارتش سوییس" به آن اشاره می شود و یکی از ابزارهای شبکه است که برای دیباگ و بررسی شبکه و همچنین برای ایجاد ارتباطات شبکه ای با استفاده از TCP یا UDP، اسکن پورت، انتقال فایل و امور بیشمار دیگر مورد استفاده قرار میگیرد. این ابزار ایجاد شده تا یک back-end غیر مستقل باشد و بخصوص در برنامه ها و اسکریپت ها مورد استفاده قرار گیرد، از آنجایی که این ابزار میتواند اغلب هر نوعی از ارتباطات شبکه ای را ایجاد کند و شامل تعدادی قابلیت ها ی ساختاری میباشد.
pv که مخفف Pipe viewer است در حقیقت یک ابزار بر پایه ترمینال بوده و برای مانیتور کردن عملیات ارسال data از طریق یک pipeline مورد استفاده قرار میگیرد. این ابزار برای کاربر امکان دیدن عملیات مربوط به دیتا به همراه progress bar (نوار مربوط به پیشروی عملیات انتقال)، مدت زمان سپری شده، درصد انتقال در لحظه، میزان throughput جاری، دیتای کل انتقال یافته و میزان زمان تخمین زده برای تکمیل عملیات را فراهم میآورد.
همچنین توصیه میشود مطالعه کنید :
دستور پیشرفته Copy در لینوکس - نمایش میزان پیشرفت کپی فایل ها و فولدرهای بزرگ
نحوه مانیتور کردن عملیات Data با استفاده از دستور PV (مخفف Pipe Viewer)
pscp - انتقال/کپی فایل ها به چندین سرور لینوکس با استفاده از تنها یک شل
10 نمونه از دستورات sFTP برای انتقال فایل ها روی سرورهای لینوکس راه دور
10 نمونه از دستور scp برای انتقال فایل ها و فولدرها در لینوکس
10 مثال از دستور Rsync در لینوکس
اکنون نحوه ترکیب دو دستور برای انتقال فایل ها بین دو کامپیوتر لینوکسی را با هم مشاهده میکنیم. برای این منظور در این مقاله ما از دو ماشین لینوکسی با ip آدرس های زیر استفاده میکنیم.
کد PHP:
Machine A with IP : 192.168.25.4
Machine B with IP : 192.168.25.76
نکته : من شدیدا توصیه میکنم که برای ارسال و دریافت Data از بستر شبکه public از netcat استفاده نکنید با توجه به اینکه این دستور از هیچ گونه لاگین یا اهراز هویتی استفاده نمیکند تنها تجهیزات مورد نیازش ip کلاینت و شماره پورت مورد نظر میباشد و دیتا به شکل غیر امن از بستر شبکه منتقل میشود. بنابراین برای کاربران پیشرفته لینوکسی توصیه میشود و ترجیح داده میشود که روی شبکه محافظت شده لوکال استفاده شود.
در شرایطی که امنیت دیتا بسیار مهم است همیشه از rsync روی SSH یا scp روی SSH استفاده کنید.
اکنون اجازه دهید با مثال های ساده واقعی از دستورات nc و pv آغاز کنیم اما قبل از آن هر دو ابزار باید روی سیستم تان نصب باشند. در صورتی که نصب نبودند آنها را با استفاده از ابزار پکیج منیجر مربوط به توزیع لینوکسی خود و همانند دستورات زیر نصب کنید.
کد PHP:
# yum install netcat pv [On RedHat based systems]
# dnf install netcat pv [On Fedora 22+ versions]
# apt-get install netcat pv [On Debian and its derivatives]
نحوه انتقال فایل ها بین 2 ماشین لینوکسی
فرض میکنیم که شما میخواهید یک فایل بزرگ به نام Elastix-4.0.74-Stable-x86_64-bin-10Feb2016.iso از کامپیوتر A به کامپیوتر B و از طریق شبکه ارسال کنید. سریع ترین راه برای رسیدن به این هدف استفاده از دستور nc (یکی از ابزارهای شبکه) میباشد که فایل ها را از طریق شبکه TCP انتقال میدهد. و همچنین استفاده از دستور pv برای مانیتور کردن عملیات ارسال data و همچنین ابزار tar برای فشرده سازی دیتا به منظور بهبود سرعت انتقال میباشد.
روی ماشین لینوکسی A
ابتدا به ماشین A با ip آدرس 192.168.25.4 لاگین میکنیم سپس دستور زیر را اجرا کنید.
کد PHP:
# tar -zcf - Elastix-4.0.74-Stable-x86_64-bin-10Feb2016.iso | pv | nc -l -p 5555 -q 5
tar -zcf : دستور tar یک ابزار tape archive میباشد که برای compress/uncompress کردن فایل های آرشیو مورد استفاده قرار میگیرد. آپشن -c یک فایل آرشیو .tar جدید ایجاد میکند، -f نوع فایل آرشیو را مشخص میکند و -z آرشیو را از طریق gzip فشرده میکند.
Elastix-4.0.74-Stable-x86_64-bin-10Feb2016.iso : نام فایلی که از طریق شبکه منتقل خواهد شد را مشخص میکند که میتواند فایل یا مسیر یک فایل باشد.
pv : دستور Pipe Viwer برای مانیتور کردن عملیات ارسال Data
nc -l -p 5555 -q 5 : ابزار شبکه ای که برای ارسال و دریافت دیتا روی بستر TCP استفاده میشود. آپشن -l برای listen کردن یک ارتباط ورودی استفاده میشود، آپشن -p 5555 پورت مبداء مورد استفاده را مشخص میکند و -q 5 تعداد ثانیه های انتظار را مشخص کرده و بعد از آن زمان بسته میشود.
روی ماشین لینوکسی B
اکنون به ماشین B با ip آدرس 192.168.25.76 لاگین کرده و دستور زیر را اجرا کنید.
کد PHP:
# nc 192.168.1.4 5555 | pv | tar -zxf -
فایل مورد نظر به کامپیوتر B منتقل میشود و شما قادر خواهید بود که میزان سرعت عملیات اجرایی را مشاهده کنید. هزاران کاربرد بی نظیر دیگر از ابزار های nc (که هنوز پوشش داده نشده اما به زودی درباره آنها خواهیم نوشت) و همچنین pv (ما قبلا یک مقاله با جزئییات درباره آن آماده کردیم که از اینجا میتوانید آنرا مطالعه کنید) موجود است. اگر شما نیز مثالهای دیگری از این دستورات میدانید با ما در همین پست به اشتراک بگذارید.