آموزش کامل دستور 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 | چندین فایل کپی نشد. |
17 پاسخ به “آموزش کامل دستور RoboCopy”
با سلام و خسته نباشی
مطالب خیلی جالب و مفید بود ممنونم بابت زحمات شما
سلام ، میخوام یه کدی بنویسم که فقط یک نوع فرمت رو برام از یه درایو خاصی کپی کنه و تو درایو دیگه پیست کنه.
مثلا همه ی فایل هایی که در درایو D با فرمت pdf هستن رو برام کپی کنه و در درایو E در پوشه pdfs پیست کنه
میشه کمکم کنین چه کدی باید بنویسم
سلام امیرحسین
کافیه بعد از دستور robocopy آدرس مبدا و مقصد رو مشخص کنید و سپس فرمت مد نظر تون رو وارد کنید. برای مثال:
پارامتر /s هم برای کپی گرفتن فایلها و پوشه های زیر مجموعه
موفق باشید
خیلی ممنونم بابت پاسخ دادن.
با سلام
مي خواستم يك تاريخ خاص را از فولدر به فولدر ديگركپي كند
با سلام
لطفا كد دستوري با robocopy اعلام فرماييد جهت كپي فايل از يك فولدر به فولدر ديگر ( فقط تاريخ مشخصي رو مي خوام)
سلام
میتونید از پارامتر های /Minage و /Maxage برای مشخص نمودن حداقل و حداکثر عمر فایل استفاده کنید. (به اینصورت میتونید یک تاریخ مشخص رو دربیارید)
برای مثال:
حداکثر عمر فایل: سال 2019 ماه 10 روز 16 – حداقل عمر فایل: سال 2019 ماه 10 روز 17
موفق باشید
سلام
امکان این هست که بعد از مدت 1 ماه یا 30 روز فایل های قدیمی تر از 30 روز از مقصد پاک شود ؟
در ضمن من از این کد استفاده میکنم
تغییر در مبدا باعث تغییر در مقصد هم میشود
RoboCopy D:\ \\network /MON:1 /MOT:10000 /MIR
سلام
بله، پارامترهای دستور رو بررسی کنید
سلام و متشکر بابت مطالب مفید شما
من میخام یک فایل رو در مسیر شبکه ورک گروپ با یوزر و پسورد مشخصی کپی کنم. با سوئیچ /user میشه این کار رو انجام داد اما به خطا برمیخورم و نمیتونم انجامش بدم. لطفا این سوئیچ رو هم توضیح بدید.
متشکر
خیلی مفید بود ممنون از شما
ممنونم، محبت دارید 🙂
سلام من میخوام یه بک اپ از همه درایوام تهیه کنم برای تغییر ویندوز از 7 به 10 تا هیچکدوم از اطلاعاتم پاک نشن چطوری اینکارو انجام بدم و بک اپ چقد حجم مگیره چون میخوام توی فلش بریزمش و بعدش ویندوز رو نصب کردم فقط ویندوز تغییر کنه
سلام مهندس یه دوره ویدیویی از اموزش اسکریپت نویسی می سازید فکر کنم طرفدارانش زیاد باشن مثل دوره سی ام دی که قبلا درست کردید کاش پلاس هم درست کنید من که دوره سی ام دی تون گرفتم عالی بود هست بیست 🌹
سلام محسن جان، ممنونم از نگاه و تعریف تون، خودم دوست دارم و سعی میکنم انجامش بدم 🌹🌹🌹