آموزش کامل دستور RoboCopy

دستور Robocopy چیست و چگونه کار میکند؟

یکی از دستورات فوق پیشرفته در خط فرمان ویندوز دستور RoboCopy است. دستور RoboCopy به شما اجازه میدهد هر گونه که نیاز داشتید فایلهای تان را از یک مسیر به مسیر دیگر کپی (Copy) و یا منتقل (Move) کنید. از ویژگیهای بارز دستور RoboCopy میتوان به انتقال فایلها توسط ویژگیهای (File Attributes) آنها اشاره نمود. مثلا میتوان فقط فایلهای که ویژگی Archive روی آنها تنظیم شده را کپی نمود و یا فایلهای که ویژگیهای مشخص شده را داشتند را کپی و یا منتقل کرد و حتی میتوان مشخص کرد که فایلهای که یک ویژگی خاص را داشتند دیگر کپی نشوند.

پیشنهاد: اگر شما هم از علاقه مندان به دنیای خط فرمان ویندوز میباشد به شما پیشنهاد میکنم حتما به فهرست دستورات CMD یا همان خط فرمان ویندوز سر بزنید.

چگونه میتوانیم از دستور RoboCopy استفاده کنیم؟

استفاده از دستور RoboCopy به سادگی دستور Copy و XCopy میباشد و به طور کلی هیچ فرقی بین نحوه استفاده از این دستورات باهم وجود ندارد. تنها تفاوت میان آنها، گزینه ها و ویژگیهای میباشد که این دستورات ارائه میکنند. دستور XCopy از دستور Copy پیشرفته تر است و گزینه های بیشتری دارد و دستور RoboCopy از دستور XCopy پیشرفته تر و به نسبت گزینه های بیشتر و پیشرفته تری دارد.

در مثال زیر نحوه استفاده از دستور RoboCopy مشخص شده و شما میتوانید آنرا مشاهده کنید:

RoboCopy C:\MySources X:MyDestination

در مثال بالا ابتدا دستور RoboCopy مشخص شده سپس مسیر فایلهای که قرار است کپی شوند (C:\MySourcesFiles) و پس از آن مقصدی که فایلها قرار است به آنجا منتقل شوند مشخص شده است.

با استفاده از دستور RoboCopy میتوان همانند دستورات Copy و XCopy فایلها را با پسوند آنها مشخص نمود. مثلا فقط فایلهای اجرایی را کپی کنیم یا مشخص کنیم فقط عکسهای که پسوند آنها .Jpg میباشند کپی شوند. برای مثال:

RoboCopy C:\Pictures\ X:\Pictures-Backup *.jpg

در مثال بالا مشخص شده کلیه فایلهای که پسوند .jpg دارند از پوشه Pictures به درایو X پوشه Pictures-Backup منتقل شوند.

پیشنهاد: اگر نیاز به بررسی چندین مثال از دستور RoboCopy دارید حتما مطلب مثالهای دستور RoboCopy را مطالعه کنید.

پارامتر ها و گزینه های (Options) دستور RoboCopy

همانطور که گفتم دستور RoboCopy بیش از حد پارامتر و یا Option دارد و به ما اجازه میدهد به هر نحوه که نیاز داشتیم فایلهای مان را کپی و یا منتقل کنیم.

پارامترتوضیحات
/Sپارامتر S اجازه میدهد کلیه پوشه ها و پوشه های زیر مجموع و فایلهای زیر مجموع آنها هم کپی شوند.
/Eپارامتر /E همانند پارامتر /S میباشد با این تفاوت که پوشه های خالی هم کپی خواهند شد.
/LEV:Nبا پارامتر /lev میتوانید سطح کپی شدن دایرکتوری ها را مشخص کنید. مثلا برای دستور مشخص کنید تا 3 سطح بعد فایلها و دایرکتوری ها را کپی کند.
/Zکپی کردن فایلها در حالت قابل بازگشت (Restartable) مخصوص استفاده در شبکه
/Bکپی گرفتن از فایلها در حالت Backup
/ZBکپی گرفتن از فایلها در حالت قابل بازگشت و در صورت منع دسترسی در حالت Backup
/EFSRAWکپی گرفتن از فایلهای کد گذاری شده در حالت RAW Mode
/Copy: Flagsکپی گرفتن از خواص فایل، میتوانید مقدارهای زیر را مشخص کنید:   D برای مشخص کردن داده (Data) A برای مشخص کردن ویژگیهای فایل (Attributes) T برای مشخص نمودن Time Stamps S برای مشخص کردن فهرست سطح دسترسی به فایل (ACL) O اطلاعات مربوط به مالکیت (Ownership) U اطلاعات مربوط به حسابرسی (Auditing) به صورت پیش فرض فقط DAT را کپی میکند.
/DCopy: Flagsمشخص کردن خواصی که باید برای دایرکتوری ها کپی شود. به صورت پیشفرض فقط Data و Attribute ها کپی میشوند اما میتوانید Time Stamps را هم مشخص کنید.
/Secکپی گرفتن از فایلها با اطلاعات مربوط به Access Control List مثل Copy:DATS میباشد.
/CopyAllکپی گرفتن از همه اطلاعات ممکن مثل Copy:DATSOU میباشد.
/NoCopyهیچ اطلاعاتی از فایلها کپی نخواهد شد با پارامتر /Purge کاربردی خواهد بود.
/SecFixرفع اشکال امنیتی برای همه فایلها، حتی فایلهای که نادیده گرفته شده باشند.
/TimFixرفع اشکال زمان برای همه فایلها، حتی فایلهای که نادیده گرفته شده باشند.
/Purgeحذف فایلها و دایرکتوری های که در مبدا دیگر وجود ندارند.
/MIRکپی گرفتن از ساختار دایرکتوری ها به صورت درختی همانند پارامترهای /E به همراه /Purge
/Movانتقال فایلها و حذف آنها از مبدا بعد از انجام فرایند انتقال (Move)
/Moveانتقال فایلها و دایرکتوری ها و حذف آنها از مبدا پس از انجام فرایند انتقال (Move)
/A+:اضافه نمودن ویژگی های مشخص شده به فایلهای کپی شده (File Attribute) بعد از کپی
/A-:حذف نمودن ویژگی های مشخص شده از فایلهای مبدا (File Attribute) بعد از کپی
/Createایجاد ساختار درختی از دایرکتوری ها و فایلها با حجم صفر بایت
/FATساخت فایلهای مقصد با استفاده از نام گذاری با طول کاراکتر های 8.3
/256پشتیبانی نکردن از مسیر های بسیار بلند (بیشتر از 256 کاراکتر)
/Mon:Nبررسی نمودن مبدا و اجرای دوباره دستور هنگامیکه بیشتر از N مقدار تغییرات تشخیص داده شود.
/Mot:Mبررسی مبدا و اجرای دوباره بعد از M دقیقه اگر تغییراتی تشخیص داده شود.
/MT:Nایجاد چندین رشته کپی، مقدار N میتواند از 1 تا 128 باشد و به صورت پیش فرض عدد آن 8 است. به طور کلی نمیتوان از پارامتر MT با پارامترهای /IPG و یا پارامتر /EFSRAW استفاده نمود. بهتر است خروجی دستور را با پارامتر /Log منتقل کنید تا اجرای بهتری داشته باشد.
/RH: HH MMمشخص کردن زمان اجرا، زمانیکه کپی های جدید شروع میشوند.
/PFبررسی زمان اجرا بر اساس هر فایل
/IPG:Nمشخص نمودن Inter-Packet Gap برای آزاد سازی خطوط کند شده
/SLدنبال نمودن Symbolic Link ها و کپی گرفتن از هدف آنها

پارامتر ها و یا گزینه های انتخاب فایل

پارامترتوضیحات
/Aفقط فایلهای که ویژگی Archive روی آنها تنظیم شده بود کپی شوند.
/Mفقط فایلهای که ویژگی Archive روی آنها تنظیم شده بود کپی شوند و بعد از آن این ویژگی از آنها برداشته شود.
/IA:فقط فایلهای کپی شوند که ویژگیهای مشخص شده را داشته باشند.
/XA:فایلهای که ویژگیهای مشخص شده را داشتند کپی نشوند.
/XFمشخص کردن فایلها و مسیر های که نباید کپی شوند. میتوانید از کاراکتر ستاره هم برای مشخص کردن گروهی فایلها استفاده کنید.
/XDمشخص کردن نا و مسیر دایرکتوری های که نباید کپی شوند.
/XCمشخص کردن فایلهای که تغییرات داشته اند و نباید کپی شوند.
/XNمشخص کردن فایلهای جدیدی که نباید کپی شوند.
/XOمشخص کردن فایلهای قدیمی که نباید کپی شوند.
/XXمشخص نمودن فایلها و دایرکتوری های اضافی که نباید کپی شوند.
/XLمشخص کردن فایلها و دایرکتوری های تنها که نباید کپی شوند.
/ISشامل فایلهای یکسان
/ITشامل فایلهای اصلاح شده
/MAX:Nمشخص کردن حداکثر حجم فایلهای که باید کپی شوند.
/MIN:Nمشخص کردن حداقل حجم فایلهای که باید کپی شوند.
/MAXAGE:Nمشخص کردن حداکثر طول عمر فایلهای که باید کپی شوند. (N میتواند تاریخ یا تعداد روز باشد)
/MINAGE:Nمشخص کردن حداقل طول عمر فایلهای که باید کپی شوند. (N میتواند تاریخ یا تعداد روز باشد)
/MAXLAD:Nمشخص کردن حداکثر زمانی که آخرین بار به یک فایل دسترسی داشته اید. (کپی نکردن فایلهای که بیشتر از N مقدار به آنها دسترسی نداشته اید)
/MINLAD:Nمشخص کردن حداقل زمانی که آخرین بار به یک فایل دسترسی داشته اید. (کپی نکردن فایلهای کمتر از N مقدار به آنها دسترسی داشته اید)
/XJکپی نکردن مقصد Junction به صورت پیش فرض کپی میشوند.
/FFTدر نظر گرفتن زمانهای فایل FAT (با دو ثانیه دقت)
/DSTجبران کردن برای 1 ساعت تفاوت زمان DST
/XJDکپی نکردن مقصد Junction های که به دایرکتوری اشاره میکنند.
/XJFکپی نکردن مقصد Junction های که با فایلها اشاره میکنند.

پارامتر ها و گزینه های تلاش مجدد

پارامترتوضیحات
/R:Nتعداد تلاشهای که برای کپی کردن هنگام برخورد با خطا باید انجام شوند. (عدد پیش فرض N یک میلیون است)
/W:Nمشخص کردن زمان توقف بین هر تلاش (بر ثانیه)، مقدار پیش فرض N هر 30 ثانیه میباشد.
/REGمقدار های مشخص شده در جلوی پارامترهای /R و /W به عنوان مقادیر پیش فرض در Registry ویندوز ذخیره شود.
/TBDمشخص میکند تا سیستم برای نام های به اشتراک گذاشته شده صبر کند.

پارامتر ها و گزینه های Logging

پارامترتوضیحات
/Lبرای اینکه فایلها فقط فهرست گرفته شوند (نه کپی شوند نه حذف شوند و نه Time Stamp شان تغییر کند.)
/Xگزارش گرفتن از همه فایلهای اضافه، نه فقط فایلهای که به نوعی انتخاب شده باشند.
/Vنمایش جزئیات فایلهای تولید شده و نمایش همه فایلهای نادیده گرفته شده (Verbose)
/TSشامل Time Stamp فایل مبدا در خروجی
/FPشامل نام و مسیر کامل فایلها در خروجی
/Bytesنمایش حجم فایلها از بایت (Bytes)
/NSبرای اینکه مشخص شود حجم فایلها نباید Log شوند.
/NCبرای اینکه مشخص شود کلاس فایلها نباید Log شوند.
/NFLبرای اینکه مشخص شود نام فایلها نباید Log شوند.
/NDLبرای اینکه مشخص شود نام دایرکتوری ها نباید Log شوند.
/NPبرای نمایش داده نشدن فرایند کپی (تعداد فایلهای کپی شده دیگر نمایش داده نمیشود)
/ETAنمایش زمان تخمین زده شده (ETA) از فایلهای که کپی شدند.
/LOG: Logنوشته شدن وضعیت خروجی روی فایل Log (اگر فایل Log از قبل وجود داشته باشد باز نویسی خواهد شد)
/Unicodeنمایش وضعیت خروجی با فرمت Unicode
/UniLog: Logنوشتن وضعیت خروجی در یک فایل Log با فرمت Unicode (اگر فایل از قبل وجود داشته باشد بازنویسی خواهد شد)
/UniLog+: Logنوشتن وضعیت خروجی در یک فایل Log با فرمت Unicode (اگر فایل از قبل وجود داشته باشد متن به ادامه فایل موجود اضافه خواهد شد)
/Teeنوشتن وضعیت خروجی در پنجره Console به همراه اضافه نمودن در فایل Log
/NJHبرای اینکه مشخص شود هیچ Job Header وجود ندارد.
/NJSبرای اینکه مشخص شود هیچ Job Summary وجود ندارد.

پارامتر ها و گزینه های مربوط به Job

پارامترتوضیحات
/Job: Nameبرای اینکه مشخص شود پارامتر ها از فایل Job نام گذاری شده نشات گرفته شده اند.
/Save: Nameبرای اینکه مشخص شود پارامتر ها باید در فایل Job نام گذاری شده ذخیره شوند.
/Quitترک پس از پردازش خط فرمان
/NoSDدایرکتوری مبدا مشخص نشده است.
/NoDDدایرکتوری مقصد مشخص نشده است.
/IFشامل فایلهای مشخص شده

کد های بازگشتی (Return Codes) دستور RoboCopy

پس از اجرای دستور RoboCopy با یکی از کد های زیر مواجه خواهید شد که هر کدام آنها یک معنی مشخص دارند این کدها از قرار زیر میباشند:

مقدارتوضیحات
0هیچ فایلی کپی نشد. با هیچ خطای روبرو نشدیم. هیچ فایل نا هماهنگی یافت نشد. فایل از قبل در پوشه مقصد موجود میباشد از اینرو فرایند کپی نادیده گرفته شد.
1کلیه فایلها با موفقیت کپی شدند.
2فایلهای اضافی در مقصد موجود بودند که در مبدا وجود ندارند، از اینرو هیچ فایلی کپی نشد.
3چندین فایل کپی شدند. فایلهای اضافی حاضر بودند، با هیچ مشکلی روبرو نشد.
4 
5بعضی از فایلها کپی شدند. چند فایل نا هماهنگ وجود داشت. به هیچ مشکلی بر نخورد.
6فایلهای نا هماهنگ وجود دارند. هیچ فایلی کپی نشد و هیچ خطای هم اتفاق رخ نداد. این بدان معنی میباشد که فایلها از قبل در مقصد وجود داشتند.
7فایلها کپی شدند. یک فایل نا هماهنگ پیدا شد، و باقی فایلها حاضر میباشند.
8چندین فایل کپی نشد.

15 دیدگاه دربارهٔ «آموزش کامل دستور RoboCopy»

  1. میلاد محمدی

    با سلام و خسته نباشی
    مطالب خیلی جالب و مفید بود ممنونم بابت زحمات شما

  2. سلام ، میخوام یه کدی بنویسم که فقط یک نوع فرمت رو برام از یه درایو خاصی کپی کنه و تو درایو دیگه پیست کنه.
    مثلا همه ی فایل هایی که در درایو D با فرمت pdf هستن رو برام کپی کنه و در درایو E در پوشه pdfs پیست کنه

    1. سلام امیرحسین
      کافیه بعد از دستور robocopy آدرس مبدا و مقصد رو مشخص کنید و سپس فرمت مد نظر تون رو وارد کنید. برای مثال:

      Robocopy D:\ E:\ *.pdf /s

      پارامتر /s هم برای کپی گرفتن فایلها و پوشه های زیر مجموعه
      موفق باشید

  3. آذر نجاتي

    با سلام
    مي خواستم يك تاريخ خاص را از فولدر به فولدر ديگركپي كند

  4. آذر نجاتي

    با سلام
    لطفا كد دستوري با robocopy اعلام فرماييد جهت كپي فايل از يك فولدر به فولدر ديگر ( فقط تاريخ مشخصي رو مي خوام)

    1. سلام
      میتونید از پارامتر های /Minage و /Maxage برای مشخص نمودن حداقل و حداکثر عمر فایل استفاده کنید. (به اینصورت میتونید یک تاریخ مشخص رو دربیارید)
      برای مثال:

      robocopy X:\ D:\ /maxage:20191016 /minage:20191017

      حداکثر عمر فایل: سال 2019 ماه 10 روز 16 – حداقل عمر فایل: سال 2019 ماه 10 روز 17
      موفق باشید

  5. امیر بهادر

    سلام
    امکان این هست که بعد از مدت 1 ماه یا 30 روز فایل های قدیمی تر از 30 روز از مقصد پاک شود ؟

    1. امیر بهادر

      در ضمن من از این کد استفاده میکنم
      تغییر در مبدا باعث تغییر در مقصد هم میشود
      RoboCopy D:\ \\network /MON:1 /MOT:10000 /MIR

  6. احمد رضاپور

    سلام و متشکر بابت مطالب مفید شما
    من میخام یک فایل رو در مسیر شبکه ورک گروپ با یوزر و پسورد مشخصی کپی کنم. با سوئیچ /user میشه این کار رو انجام داد اما به خطا برمیخورم و نمیتونم انجامش بدم. لطفا این سوئیچ رو هم توضیح بدید.
    متشکر

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

دیدگاه‌ خود را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.