XFS_COPY(8) دستورات مدیریت سیستم XFS_COPY(8)

xfs_copy - کپی کردن فایلسیستم XFS به چندین مقصد به صورت همزمان

xfs_copy [ -bd ] [ -L log ] source target1 [ target2 ... ]
xfs_copy -V

دستور xfs_copy یک نسخه دقیق از یک سیستم پرونده XFS را بر روی یک یا چند دستگاه یا فایل کپی میکند. این کار را به صورت موازی برای یک یا چند مقصد انجام می‌دهد (ببینید xfs(5)). اولین آرگومان (source) باید مسیر دستگاه یا فایلی باشد که حاوی سیستم پرونده XFS است. آرگومان‌های باقیمانده، یک یا چند دستگاه یا نام فایل target (مقصد) را مشخص می‌کنند. اگر مسیرها دستگاه باشند، یک رونوشت از سیستم پرونده XFS مبدأ بر روی هر دستگاه ایجاد می‌شود. مقصد (target) همچنین می‌تواند نام یک فایل معمولی باشد، که در این صورت تصویری (ایمیج) از سیستم پرونده XFS مبدأ در آن فایل ایجاد می‌شود. اگر فایل وجود نداشته باشد، xfs_copy فایل را ایجاد می‌کند. طول فایل حاصل برابر با اندازه سیستم پرونده مبدأ خواهد بود. با این حال، اگر فایل روی یک سیستم پرونده XFS ایجاد شود، تنها تقریباً به اندازه فضایی که واقعاً در سیستم پرونده مبدأ توسط فایلسیستم و گزارش وقایع (log) مصرف شده است، فضا اشغال می‌کند. این صرفه‌جویی در فضا به این دلیل است که xfs_copy از روی بلوک‌های خالی می‌گذرد (seek انجام می‌دهد) و آن‌ها را کپی نمی‌کند، و سیستم پرونده XFS نیز به‌طور کارآمد از فایل‌های کم‌پشت (sparse) پشتیبانی می‌کند.

xfs_copy تنها باید برای کپی کردن سیستم پرونده‌های unmount شده، سیستم پرونده‌های سوار شده به‌صورت فقط‌خواندنی، یا سیستم پرونده‌های منجمدشده (frozen) استفاده شود (ببینید xfs_freeze(8)). در غیر این صورت، سیستم پرونده(های) ایجادشده ناسازگار یا خراب خواهند بود.

xfs_copy به هیچ وجه سیستم پرونده مبدأ را تغییر نمی‌دهد. هر سیستم پرونده جدید (مقصد) کاملاً مشابه با سیستم پرونده اصلی است، با این تفاوت که هر یک از سیستم‌های پرونده جدید دارای یک شناسه یکتای جدید (UUID) خواهند بود. بنابراین، اگر قرار است هر دو سیستم پرونده قدیم و جدید به‌عنوان سیستم پرونده‌های مجزا و متمایز استفاده شوند، باید از xfs_copy یا xfsdump(8)/xfsrestore(8) برای ایجاد سیستم پرونده(های) جدید استفاده شود، نه از dd(1) یا برنامه‌های دیگری که کپی دیسک را به‌صورت بلوک‌به‌بلوک انجام می‌دهند.

xfs_copy از نوشتن همگام (synchronous writes) استفاده می‌کند تا از تشخیص خطاهای نوشتن اطمینان حاصل شود.

xfs_copy از pthreads(7) برای انجام نوشتن همزمان و موازی استفاده می‌کند. xfs_copy به ازای هر مقصدی که باید روی آن نوشته شود، یک ریسه (thread) اضافی ایجاد می‌کند. اگر xfs_copy خاتمه یابد یا متوقف شود، همه ریسه‌ها بسته می‌شوند.

ایجاد یک سیستم پرونده دقیقاً مشابه (کلون واقعی). این کار تنها در صورتی باید انجام شود که سیستم پرونده جدید قرار است جایگزین سیستم پرونده اصلی شود (مانند موارد تعویض دیسک).
گزینه بافر شده را می‌توان برای اطمینان از اینکه عملیات ورودی/خروجی مستقیم (Direct IO) روی هیچ‌یک از فایل‌های مقصد انجام نشود، به کار برد. این گزینه زمانی مفید است که سیستم پرونده نگه‌دارنده فایل مقصد از Direct IO پشتیبانی نکند.
مکان فایل log (گزارش وقایع) را در صورتی که مسیر پیش‌فرض /var/tmp/xfs_copy.log.XXXXXX مورد نظر نباشد، مشخص می‌کند.
نمایش شماره نسخه و خروج.

xfs_copy خطاها را هم در stderr و هم با جزئیات بیشتر در یک فایل لاگ تولیدشده به نامی با فرمت /var/tmp/xfs_copy.log.XXXXXX یا فایل لاگ مشخص‌شده توسط گزینه -L گزارش می‌دهد. اگر xfs_copy یک خطای نوشتن در مقصدی را تشخیص دهد، عملیات کپی در همان یک مقصد لغو می‌شود و پیامی در خروجی stderr و فایل لاگ صادر می‌گردد، اما کپی برای مابقی مقصدها ادامه می‌یابد. هنگامی که xfs_copy پایان می‌یابد، تمام مقصدهای لغوشده به stderr و فایل لاگ گزارش می‌شوند.

اگر تمام مقاصد متوقف شوند یا خطایی در خواندن سیستم پرونده مبدأ رخ دهد، xfs_copy بلافاصله متوقف می‌شود.

دستور xfs_copy در صورت کپی موفقیت‌آمیز تمام مقاصد، کد خروج ۰ و در صورت بروز خطا در هر یک از مقاصد، کد خروج ۱ برمی‌گرداند.

هنگام انتقال سیستم‌های پرونده از یک دیسک به دیسک دیگر، اگر سیستم پرونده اصلی به‌طور چشمگیری کوچک‌تر از سیستم پرونده جدید باشد و قرار باشد بزرگ‌تر شود، توصیه می‌کنیم که از mkfs.xfs(8) و xfsdump(8)/xfsrestore(8) به‌جای استفاده از xfs_copy و xfs_growfs(8) استفاده شود. چیدمان سیستم پرونده حاصل از xfs_copy/xfs_growfs تقریباً همیشه بدتر از نتیجه استفاده از mkfs.xfs/xfsdump/xfsrestore است، اما در مورد سیستم پرونده‌های کوچک، این تفاوت‌ها می‌توانند تأثیر چشمگیری بر کارایی بگذارند. این موضوع به دلیل نحوه عملکرد xfs_growfs(8) است، نه به دلیل کاستی یا نقصی در خود xfs_copy.

xfs_copy سیستم‌های پرونده XFS دارای بخش بلادرنگ (real-time) یا سیستم‌های پرونده XFS با لاگ خارجی را کپی نمی‌کند. در هر دو حالت، xfs_copy با یک پیام خطا متوقف می‌شود.

mkfs.xfs(8), xfsdump(8), xfsrestore(8), xfs_freeze(8), xfs_growfs(8), xfs(5).

مه ۲۰۲۵ xfsprogs