
ویندوز از بیش از دو دهه پیش ابزاری خط فرمانی (Command Line) به نام رابوکپی (Robocopy) را در خود جای داده است؛ ابزاری که بسیاری از کاربران از وجود آن بیخبرند و برای انتقال و همگامسازی فایلها سراغ نرمافزارهای شخص ثالث میروند. به گزارش XDA Developers، این ابزار میتواند عملیات فایل را روی مکانهای شبکهای اشتراکی (Shared Network Locations) نیز انجام دهد.
Robocopy؛ گزینهای سبک برای انتقال و پشتیبانگیری
نویسنده مقاله از رابوکپی برای پشتیبانگیری خارجی (External Backup) استفاده میکند. او یک اسکریپت (Script) نوشته که هنگام ورود به سیستم (Logon) عملیات کپی را بین رایانه شخصی و درایو خارجی انجام میدهد. به گفته او، این روش از استفاده از رابط گرافیکی (GUI) در File Explorer بهتر است و نیازی به نرمافزارهای سنگین و پرمصرف ندارد.
یکی دیگر از کاربردهای عملی، کپی حجم زیادی از دادهها به دیسکی دیگر است. رابوکپی فلگهای (Flags) متعددی برای مدیریت خطا، تلاش مجدد (Retry) و حتی آینهسازی (Mirror) مبدأ روی مقصد دارد.
ساخت اسکریپت همگامسازی با Robocopy
در تجربه عملی، نویسنده قصد داشته پوشهای را از رایانه اصلی به یک ماشین مجازی (Virtual Machine) که دانلودها و اسکریپتها را ذخیره میکند، همگامسازی کند. او با کمک دستیارهای هوش مصنوعی مانند Gemini و ChatGPT چند نسخه از اسکریپت را ساخت تا با رابوکپی این کار را انجام دهد.
ابتدا یک پوشه اشتراکی (Shared Folder) روی ماشین مجازی ساخته و مجوزهای آن را برای کنترل کامل تغییر داده است. سپس دسترسی به آن را از رایانه اصلی با File Explorer آزمایش کرده است. یک فرمان ساده رابوکپی با فلگهای /E برای کپی زیرپوشهها و /Z برای حالت قابلازسرگیری (Restartable Mode) میتواند فایلها را به پوشه اشتراکی منتقل کند. در صورت قطع ارتباط شبکه، انتقال از همان نقطه قطعشده ادامه مییابد، نه از ابتدا.
اما این فرمان بهتنهایی تجربه یک ابزار همگامسازی کامل را نمیسازد. اگر فایلی از مبدأ حذف شود، اجرای دوباره فرمان آن را از مقصد حذف نمیکند. در مقابل، اگر فایلی از مقصد حذف شود، اجرای مجدد آن را کپی میکند و موارد مشابه را رد میکند.
واچداگ، دیبانسینگ و آینهسازی
برای رسیدن به همگامسازی واقعی، اسکریپت به عناصر بیشتری نیاز دارد. اسکریپت نویسنده از یک تابع واچداگ (Watchdog) برای تشخیص تغییرات بین مبدأ و مقصد استفاده میکند. یک تابع دیبانسینگ (Debouncing) نیز سرعت واکنش اسکریپت به تغییرات را کنترل میکند. پس از تشخیص تغییر، از فلگ /MIR برای آینهسازی و کپی تغییرات روی مقصد استفاده میشود.
توابع دیگری نیز برای ذخیره لاگها (Logs)، تشخیص خطا، تلاش مجدد برای کپی پس از یک بازه انتظار مشخص و موارد مشابه در نظر گرفته شده است. اسکریپت ابتدا با پاورشل (PowerShell) آزمایش شده و سپس برای آن وظیفهای در زمانبند وظایف (Task Scheduler) ساخته شده است. این اسکریپت فعال میماند و منتظر تغییر فایلها میماند. نویسنده زمان انتظار را به یک دقیقه کاهش داده تا عملیات کپی سریعتر انجام شود.
این اسکریپت یک همگامسازی یکطرفه (One-sided Sync) است؛ یعنی اگر چیزی در مبدأ اضافه یا حذف شود، مقصد فوراً بهروزرسانی میشود. ساخت نسخه دوطرفه نیز ممکن است، اما برای این پروژه ضروری نبوده است.
مقایسه با Syncthing و Dropbox
در مقایسه با ابزاری پیشرفته مانند Syncthing، این اسکریپت بسیار ساده و ابتدایی است. با این حال، در پسزمینه اجرا میشود و تنها حدود ۵۰ مگابایت حافظه (Memory) مصرف میکند که تأثیر ناچیزی بر سیستم دارد. این ابزار کوچک نیازی به نصب روی ماشین مقصد ندارد و میتواند فایلها را به پوشه اشتراکی همگامسازی کند.
راهحلهای ابری مانند Dropbox ممکن است عملکرد بهتری داشته باشند، اما اسکریپت رابوکپی رایگان است و برای کار به حساب آنلاین یا اشتراک پرداختی نیاز ندارد.