| virt-diff(1) | پشتیبانی از مجازیسازی | virt-diff(1) |
نام (NAME)
virt-diff - مقایسه تغییرات فایلها در دو ماشین مجازی
خلاصه دستور (SYNOPSIS)
virt-diff [--options] -d domain1 -D domain2 virt-diff [--options] -a disk1.img [-a ...] -A disk2.img [-A ...]
توضیحات (DESCRIPTION)
دستور "virt-diff" فهرست تفاوتهای میان فایلها را در دو ماشین مجازی یا ایمیج دیسک نمایش میدهد. کاربرد معمول آن نمایش تغییرات در یک ماشین مجازی پس از مدتی اجرا است؛ بدین صورت که ابتدا یک اسنپشات گرفته میشود، ماشین مجازی اجرا میگردد و سپس با استفاده از این ابزار تغییرات میان وضعیت جدید ماشین مجازی و اسنپشات قدیمی بررسی میشود.
این ابزار تفاوتها در نام فایلها، اندازه، جمعهای کنترلی (checksums)، ویژگیهای گسترشیافته (extended attributes)، محتوای فایل و موارد دیگر را در یک ماشین مجازی یا ایمیج دیسک پیدا میکند. با این حال، این ابزار بوتلودر، فضای استفادهنشده میان پارتیشنها یا داخل فایلسیستمها، سکتورهای مخفی و موارد مشابه را بررسی نمیکند. به عبارت دیگر، این ابزار یک ابزار امنیتی یا جرمیابی قانونی دیجیتال (forensics) نیست.
برای مشخص کردن دو سیستم مهمان، باید از گزینههای -a یا -d برای مهمان اول، و از گزینههای -A یا -D برای مهمان دوم استفاده کنید. حالت رایج به صورت زیر است:
virt-diff -a old.img -A new.img
یا با استفاده از نامهای شناختهشده در libvirt:
virt-diff -d oldguest -D newguest
گزینهها (OPTIONS)
- --help
- نمایش راهنمای خلاصه.
- -a file
- --add file
- افزودن file
که باید یک
ایمیج دیسک
از اولین
ماشین
مجازی باشد.
اگر ماشین
مجازی
دارای
چندین
دستگاه
بلوکی
باشد، باید
همه آنها
را با
گزینههای
مجزای -a
مشخص کنید.
قالب ایمیج دیسک به طور خودکار تشخیص داده میشود. برای لغو این رفتار و تحمیل یک قالب خاص از گزینه --format=.. استفاده کنید.
- -a URI
- --add URI
- افزودن یک دیسک از راه دور. بخش "ADDING REMOTE STORAGE" در guestfish(1) را ببینید.
- --all
- معادل استفاده همزمان از --extra-stats, --times, --uids و --xattrs.
- --atime
- حالت پیشفرض نادیده گرفتن تغییرات در زمان دسترسی به فایلها (atime) است، زیرا معمولاً اهمیت چندانی ندارند. استفاده از این فلگ تفاوتهای atime را نیز نمایش میدهد.
- -A file
- -A URI
- افزودن یک ایمیج دیسک از دومین ماشین مجازی.
- --blocksize=512
- --blocksize=4096
- --blocksize
- این پارامتر اندازه سکتور ایمیج دیسک را تعیین میکند. این مقدار روی تمام دیسکهایی که پس از این پارامتر مشخص میشوند تاثیر میگذارد. استفاده از --blocksize بدون آرگومان، اندازه سکتور دیسک را به مقدار پیشفرض که معمولاً ۵۱۲ بایت است بازمیگرداند. همچنین "guestfs_add_drive_opts" در guestfs(3) را ببینید.
- --checksum
- --checksum=crc|md5|sha1|sha224|sha256|sha384|sha512
- استفاده از
جمع کنترلی
(checksum) روی
محتوای
فایلها
برای تشخیص
تغییر در
محتوای
فایلهای
معمولی.
بدون آرگومان، مقدار پیشفرض md5 است. با تعیین آرگومان میتوانید نوع جمع کنترلی مورد نظر را انتخاب کنید. در صورت عدم استفاده از این فلگ، از زمانها و اندازه فایل برای تعیین تغییر فایل استفاده میشود.
- -c URI
- --connect URI
- در صورت
استفاده از
libvirt، به URI
دادهشده
متصل
میشود. در
صورت عدم
تعیین، به
هایپروایزر
پیشفرض libvirt
متصل خواهد
شد.
اگر دستگاههای بلوکی مهمان را مستقیماً مشخص کنید (-a)، به هیچ وجه از libvirt استفاده نمیشود.
- --csv
- نوشتن نتایج در قالب CSV (مقادیر جداشده با کاما). این قالب را میتوان به سادگی در پایگاههای داده و صفحات گسترده وارد کرد، اما بخش "نکتهای درباره قالب CSV" در ادامه را مطالعه کنید.
- --dir-links
- حالت پیشفرض نادیده گرفتن تغییرات در تعداد پیوندهای ورودیهای دایرکتوری است، زیرا معمولاً اهمیت چندانی ندارند. استفاده از این فلگ تغییرات فیلد nlink دایرکتوریها را نشان میدهد.
- --dir-times
- حالت پیشفرض نادیده گرفتن تغییر زمان در ورودیهای دایرکتوری است، زیرا معمولاً اهمیت چندانی ندارند. استفاده از این فلگ تغییرات فیلدهای زمانی دایرکتوریها را نشان میدهد.
- -d guest
- --domain guest
- افزودن تمام دیسکهای مهمان نامبردهشده در libvirt به عنوان اولین مهمان. به جای نام میتوان از UUID دامین نیز استفاده کرد.
- -D guest
- افزودن تمام دیسکهای مهمان نامبردهشده در libvirt به عنوان دومین مهمان. به جای نام میتوان از UUID دامین نیز استفاده کرد.
- --echo-keys
- هنگام درخواست کلیدها و گذرواژهها، virt-diff به طور معمول بازتاب کاراکترها (echo) را خاموش میکند تا آنچه را تایپ میکنید نبینید. اگر نگران حملات تمپست (Tempest attacks) نیستید و فرد دیگری در اتاق حضور ندارد، میتوانید از این گزینه برای مشاهده کاراکترهای تایپشده استفاده کنید.
- --extra-stats
- نمایش آمار و اطلاعات اضافی.
- --format=raw|qcow2|..
- --format
- حالت
پیشفرض
برای
گزینههای
-a/-A تشخیص
خودکار
قالب ایمیج
دیسک است.
استفاده از
این گزینه
قالب دیسک
را برای
گزینههای
-a/-A بعدی در
خط فرمان
تحمیل
میکند.
استفاده از
--format بدون
آرگومان،
رفتار را به
تشخیص
خودکار
برای
گزینههای
بعدی -a/-A
بازمیگرداند.
برای مثال:
virt-diff --format=raw -a disk.img [...]
استفاده از قالب raw (بدون تشخیص خودکار) را برای disk.img اجباری میکند.
virt-diff --format=raw -a disk.img --format -a another.img [...]
قالب raw را برای disk.img اجباری کرده و برای another.img به تشخیص خودکار بازمیگردد.
اگر ایمیجهای دیسک مهمان غیرقابلاعتمادی با قالب raw دارید، باید از این گزینه برای مشخص کردن قالب دیسک استفاده کنید. این کار از یک مشکل امنیتی احتمالی در مهمانهای مخرب جلوگیری میکند (CVE-2010-3851).
- -h
- --human-readable
- نمایش اندازه فایلها در قالبی خوانا برای انسان.
- --key SELECTOR
- مشخص کردن یک کلید برای LUKS، جهت باز کردن خودکار دستگاههای دارای رمزگذاری LUKS هنگام بازرسی.
- --key NAME:key:KEY_STRING
- --key UUID:key:KEY_STRING
- --key all:key:KEY_STRING
- مقدار
"NAME" نام
دستگاه در
libguestfs است
(مانند
"/dev/sda1").
"UUID"
شناسه
یکتای (UUID)
دستگاه است.
"all" به
معنای
امتحان
کردن کلید
برای تمام
دستگاههای
رمزگذاریشده
است.
استفاده از "KEY_STRING" مشخصشده به عنوان عبارت عبور (passphrase).
- --key NAME:file:FILENAME
- --key UUID:file:FILENAME
- --key all:file:FILENAME
- خواندن عبارت عبور از FILENAME.
- --key NAME:clevis
- --key UUID:clevis
- --key all:clevis
- تلاش برای
باز کردن
قفل دستگاه
بدون نیاز
به عبارت
عبور با
استفاده از
Clevis و از طریق
شبکه. لطفاً
برای
اطلاعات
بیشتر
درباره
رمزگذاری
دیسک متکی
به شبکه (NBDE) به
بخش "ENCRYPTED DISKS" در
guestfs(3) مراجعه
کنید.
توجه داشته باشید که اگر هر یک از این گزینهها در خط فرمان وجود داشته باشد، شبکه کاربری QEMU به طور خودکار برای تجهیزات libguestfs فعال خواهد شد.
- --keys-from-stdin
- خواندن
پارامترهای
کلید یا
عبارت عبور
از ورودی
استاندارد
(stdin). حالت
پیشفرض
تلاش برای
خواندن
عبارت عبور
از کاربر با
باز کردن /dev/tty
است.
اگر چندین دستگاه رمزگذاریشده وجود دارد، ممکن است لازم باشد چندین کلید را در ورودی استاندارد، هر کدام در یک خط جداگانه، ارسال کنید.
- --times
- نمایش فیلدهای زمانی.
- --time-days
- نمایش
فیلدهای
زمانی به
صورت تعداد
روزهای پیش
از زمان
فعلی (در
صورت قرار
داشتن در
آینده،
منفی خواهد
بود).
توجه داشته باشید که 0 در خروجی به معنای «تا ۱ روز پیش از اکنون» یا به بیانی دیگر، سن فایل بین ۰ تا ۸۶۳۹۹ ثانیه است.
- --time-relative
- نمایش فیلدهای زمانی به صورت تعداد ثانیههای پیش از زمان فعلی (در صورت قرار داشتن در آینده، منفی خواهد بود).
- --time-t
- نمایش فیلدهای زمانی به صورت تعداد ثانیهها از مبدا زمانی یونیکس (Unix epoch).
- --uids
- نمایش فیلدهای UID و GID.
- -v
- --verbose
- فعالسازی پیامهای پرجزئیات برای اشکالزدایی.
- -V
- --version
- نمایش شماره نسخه و خروج.
- -x
- فعالسازی ردگیری (tracing) فراخوانیهای API در libguestfs.
- --xattrs
- نمایش ویژگیهای گسترشیافته (extended attributes).
نکتهای درباره قالب CSV (NOTE ABOUT CSV FORMAT)
قالب مقادیر جداشده با کاما (CSV) قالبی فریبنده است. به نظر میرسد که تجزیه آن ساده باشد، اما قطعاً تجزیه آن آسان نیست.
باور غلط: کافی است فیلدها را بر اساس کاما جدا کنید. واقعیت: این روش به طور قابلاعتماد کار نمیکند. این مثال دارای دو ستون است:
"foo,bar",baz
باور غلط: فایل را خط به خط بخوانید. واقعیت: این روش به طور قابلاعتماد کار نمیکند. این مثال فقط یک ردیف است:
"foo bar",baz
برای اسکریپتهای شل، از "csvtool" استفاده کنید (https://github.com/Chris00/ocaml-csv که در توزیعهای عمده لینوکس نیز بستهبندی شده است).
برای سایر زبانها، از یک کتابخانه پردازش CSV استفاده کنید (مثلاً "Text::CSV" برای پرل یا کتابخانه توکار csv در پایتون).
اکثر برنامههای صفحه گسترده و پایگاههای داده میتوانند دادههای CSV را مستقیماً وارد کنند.
وضعیت خروج (EXIT STATUS)
این برنامه در صورت موفقیت مقدار ۰ و در صورت بروز خطا مقداری غیر صفر برمیگرداند.
همچنین ببینید (SEE ALSO)
guestfs(3), guestfish(1), virt-cat(1), virt-copy-out(1), virt-ls(1), virt-tar-out(1), http://libguestfs.org.
نویسنده (AUTHOR)
Richard W.M. Jones http://people.redhat.com/~rjones
حق نشر (COPYRIGHT)
Copyright (C) 2009-2025 Red Hat Inc.
مجوز (LICENSE)
این برنامه یک نرمافزار آزاد است؛ شما میتوانید آن را تحت شرایط مجوز عمومی همگانی گنو (GNU General Public License) همانطور که توسط بنیاد نرمافزارهای آزاد منتشر شده است؛ چه نسخه ۲ مجوز یا (به انتخاب خودتان) هر نسخه پس از آن، بازتوزیع کرده یا تغییر دهید.
این برنامه با این امید توزیع شده است که مفید واقع شود، اما بدون هرگونه ضمانت؛ حتی بدون ضمانت ضمنی قابلیت فروش یا تناسب برای یک هدف خاص. برای جزئیات بیشتر به مجوز عمومی همگانی گنو مراجعه کنید.
شما باید همراه با این برنامه یک نسخه از مجوز عمومی همگانی گنو را دریافت کرده باشید؛ در غیر این صورت به نشانی زیر مکاتبه فرمایید: Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
گزارش اشکالات (BUGS)
برای دریافت فهرست باگهای مربوط به libguestfs از این پیوند استفاده کنید: https://bugzilla.redhat.com/buglist.cgi?component=libguestfs&product=Virtualization+Tools
برای گزارش یک باگ جدید علیه libguestfs از این پیوند استفاده کنید: https://bugzilla.redhat.com/enter_bug.cgi?component=libguestfs&product=Virtualization+Tools
هنگام گزارش باگ، لطفاً موارد زیر را ارائه دهید:
- نسخه libguestfs.
- محل تهیه libguestfs (مثلاً کدام توزیع لینوکس، کامپایلشده از سورس و غیره).
- شرح دقیق باگ و ارائه روشی برای بازتولید آن.
- اجرای libguestfs-test-tool(1) و چسباندن خروجی کامل و ویرایشنشده در گزارش باگ.
| 2026-07-11 | guestfs-tools-1.56.0 |