آموزش کپی کردن فایل در لینوکس با دستورهای cp، rsync و scp

آیا تا به حال خواسته‌اید فایل‌ها را در لینوکس جابجا کنید اما نمی‌دانستید از کدام دستور استفاده کنید؟ یا وقتی با سرور کار می‌کنید نمی‌دانید چطور فایل را از سیستم خود به سرور منتقل کنید؟ در لینوکس چندین ابزار خط فرمان قدرتمند برای کپی کردن فایل‌ها و دایرکتوری‌ها وجود دارد که هرکدام کاربرد و مزایای خاص خودش را دارد. در این مقاله به‌صورت کامل، ساده و کاربردی با سه دستور مهم cp، rsync و scp آشنا می‌شوید و یاد می‌گیرید چطور در سناریوهای مختلف از آنها استفاده کنید. 

در دنیای لینوکس، کار با فایل‌ها پایه و اساس مدیریت سیستم است. خواه بخواهید فایل‌ها را فقط در همان سیستم جابجا کنید، خواه بخواهید آنها را بین سیستم‌های مختلف انتقال دهید، دانستن این دستورات بسیار کمک‌کننده است. 

linux-file-copying-cp-rsync-scp
linux-file-copying-cp-rsync-scp

معرفی کلی

در لینوکس برای کپی کردن فایل‌ها معمولاً از سه ابزار زیر استفاده می‌شود:

۱) cp – مناسب برای کپی ساده فایل‌ها و پوشه‌ها در همان سیستم. 

۲) rsync – مناسب برای همگام‌سازی هوشمند و انتقال‌های مرحله‌ای در همان سیستم یا بین سرورها. 

۳) scp – مناسب برای انتقال امن فایل‌ها بین دو سیستم از طریق شبکه و SSH. 

هرکدام از این ابزارها ویژگی‌ها و کاربردهای خاص خود را دارند و در ادامه به توضیح کامل آنها می‌پردازیم.


دستور cp – کپی ساده در همان سیستم

دستور cp یکی از پایه‌ای‌ترین و متداول‌ترین ابزارها برای کپی کردن فایل‌ها و دایرکتوری‌ها در لینوکس است. با این دستور می‌توانید فایل‌ها را از یک مسیر به مسیر دیگری در همان سیستم منتقل کنید. در حالت ساده، تنها کافی است مسیر فایل مبدا و مقصد را مشخص کنید. 

نحوه استفاده بسیار ساده است:

برای کپی یک فایل معمولی:

cp source_file destination_directory

مثال:

cp file.txt /backup

اگر قصد داشته باشید چندین فایل را هم‌زمان کپی کنید، می‌توانید نام همه فایل‌ها را قبل از مسیر مقصد وارد کنید. در این حالت مقصد باید یک دایرکتوری موجود باشد، وگرنه خطا خواهید گرفت. 

برای کپی کردن کل یک پوشه به همراه زیرپوشه‌ها لازم است از گزینه -r (یا –recursive) استفاده کنید. این گزینه باعث می‌شود که تمام محتویات پوشه، از جمله زیرپوشه‌ها، نیز کپی شوند. 

مثال:

cp -r myfolder/ /backup/

در مجموع cp برای کارهای روزمره و ساده بسیار مناسب است، اما وقتی حجم داده زیاد شود یا بخواهید فقط تغییرات را انتقال دهید، شاید به ابزارهای پیشرفته‌تر نیاز داشته باشید. 


دستور rsync – همگام‌سازی و انتقال هوشمند

دستور rsync یکی از قدرتمندترین ابزارها برای همگام‌سازی فایل‌ها و دایرکتوری‌ها است. این ابزار می‌تواند هم در همان سیستم و هم برای انتقال بین دو سیستم از طریق SSH استفاده شود و برخلاف cp، فقط تغییرات را انتقال می‌دهد، نه کل فایل‌ها را. 

rsync با استفاده از یک الگوریتم دلتا، ابتدا تفاوت‌ها را بین فایل مبدا و مقصد شناسایی می‌کند و سپس تنها بخش‌های تغییر کرده را منتقل می‌کند. این کار باعث می‌شود مصرف پهنای باند و زمان انتقال تا حد زیادی کاهش یابد. 

ساختار پایه دستور:

rsync [گزینه‌ها] source destination

مثال ساده برای کپی و همگام‌سازی:

rsync -av /home/user/ /backup/user/

در اینجا -a حالت آرشیو است که ویژگی‌های فایل مثل مجوزها و مالکیت را حفظ می‌کند و -v جزئیات عملیات را نمایش می‌دهد. 

rsync به خاطر قابلیت‌هایش برای پشتیبان‌گیری، به‌روزرسانی سیستم‌ها و انتقال داده‌های حجیم بسیار مناسب است و در مدیریت سرورها کاربرد زیادی دارد. 


دستور scp – انتقال امن فایل‌ها بین سیستم‌ها

وقتی بخواهید فایل‌ها را بین دو سیستم مختلف از طریق شبکه منتقل کنید، از دستور scp استفاده می‌کنید. این ابزار از SSH برای انتقال داده‌ها استفاده می‌کند و همه اطلاعات را در حین انتقال رمزنگاری می‌کند، بنابراین امنیت بالایی دارد. 

ساختار پایه scp به صورت زیر است:

scp source destination

برای مثال، اگر بخواهید یک فایل را از سیستم محلی به سرور منتقل کنید، می‌توانید از این دستور استفاده کنید:

scp file.txt username@remote:/path/

و اگر بخواهید فایل را از سرور به سیستم خودتان برگردانید، مسیرها را برعکس وارد کنید:

scp username@remote:/path/file.txt /local_dir/

برای کپی دایرکتوری به صورت بازگشتی می‌توانید از -r استفاده کنید. 

scp برای انتقال امن و سریع فایل‌ها بین دو سیستم بسیار مناسب است، ولی نسبت به rsync قابلیت‌های همگام‌سازی ندارد و همیشه کل فایل را منتقل می‌کند. 


مقایسه کلی این سه ابزار

اگر بخواهیم صریح مقایسه‌شان کنیم:

cp برای کپی کردن سریع و ساده فایل‌ها در همان سیستم عالی است. 

rsync برای انتقال داده‌های زیاد، همگام‌سازی و بکاپ‌گیری مناسب‌تر است چون تنها تغییرات را انتقال می‌دهد. 

scp برای انتقال امن فایل‌ها بین سیستم‌ها در شبکه بهترین انتخاب است، اما برای همگام‌سازی دائمی مناسب نیست. 

در یک نگاه ساده، اگر فقط می‌خواهید فایل‌ها را در همان ماشین جابجا کنید از cp، اگر می‌خواهید هوشمندانه همگام‌سازی کنید از rsync و اگر می‌خواهید فایل را بین دو سرور امن منتقل کنید از scp استفاده کنید.


جمع‌بندی

در لینوکس ابزارهای مختلفی برای کپی کردن و انتقال فایل‌ها وجود دارد.

دستور cp برای عملیات ساده و محلی، rsync برای همگام‌سازی هوشمند و انتقال‌های پیچیده، و scp برای انتقال امن بین سیستم‌ها کاربرد دارد. بسته به نیاز، حجم داده و نوع انتقال می‌توانید ابزار مناسب را انتخاب کنید و از قدرت خط فرمان در مدیریت فایل‌ها نهایت بهره را ببرید.


سوالات پرتکرار

۱) چرا باید از rsync به‌جای cp استفاده کنم؟

rsync فقط تغییرات را انتقال می‌دهد که باعث سریع‌تر شدن انتقال و کاهش مصرف پهنای باند می‌شود. 

۲) scp برای چه‌کاری استفاده می‌شود؟

scp برای انتقال امن فایل‌ها بین دو سیستم از طریق SSH استفاده می‌شود. 

۳) آیا rsync می‌تواند از SSH برای انتقال امن استفاده کند؟

بله، rsync می‌تواند از SSH برای انتقال امن بین سیستم‌ها استفاده کند. 

۴) اگر بخواهم پوشه را هم‌زمان کپی و سرور را بروزرسانی کنم، کدام ابزار بهتر است؟

rsync برای همگام‌سازی پوشه‌ها و به‌روزرسانی سرور بهترین انتخاب است. 

۵) آیا cp قابلیت فشرده‌سازی داده‌ها را حین انتقال دارد؟

خیر، cp فقط یک کپی ساده انجام می‌دهد و ابزارهایی مثل rsync یا ابزارهای دیگر برای فشرده‌سازی مناسب‌تر هستند. 

linux-file-copying-cp-rsync-scp
linux-file-copying-cp-rsync-scp