اگر میخواهید بدانید دو نسخهٔ یک فایل چه تفاوتی دارند، diff تفاوت متنی را نشان میدهد و cmp مقایسهٔ بایتی انجام میدهد. هر دو میتوانند بدون تغییر فایلها کمک کنند؛ کد خروج۱ برای این ابزارها معمولاً یعنی «تفاوت پیدا شد»، نه اینکه اجرای مقایسه خراب شده باشد.
۱. روی دو کپی مجاز مقایسه کنید
دو فایل آموزشی old.conf و new.conf بهترتیب این محتوا را دارند. نام conf در اینجا به معنی فایل تنظیم واقعی سرور نیست:
# old.conf
mode=preview
port=3000
# new.conf
mode=preview
port=3001
خطهای توضیحیِ نام فایل را داخل خود فایل ننویسید؛ هر فایل فقط دو خط mode و port دارد. این فایلها از قبل در پوشهٔ آزمایش ساخته شدند. هیچ فرمان کپی یا بازنویسی روی تنظیمات سرور برای اجرای این مثال لازم نیست.
۲. خواندن خروجی unified diff
diff -u -- old.conf new.conf
در خروجی، سربرگ با — نسخهٔ اول و با +++ نسخهٔ دوم را معرفی میکند. خطی که با – شروع میشود در نسخهٔ اول بوده و خط دارای + در نسخهٔ دوم است. در نمونه، -port=۳۰۰۰ و +port=۳۰۰۱ دیده شد.
علامتهای کنار خط، دستور حذف یا اضافهکردن برای شِل نیستند. diff فقط اختلاف را گزارش کرده است؛ فایل old.conf بعد از اجرا همان مقدار اولیه را دارد. زمانهای کنار سربرگ هم مشخصات فایلاند، نه اثبات زمان واقعی حادثه.
۳. cmp برای برابری دقیق بایتها
cmp -- old.conf new.conf
cmp -- old.conf old.conf
cmp در حالت معمول محل اولین اختلاف را گزارش میکند. مقایسهٔ فایل با خودش خروجی نداشت و کد۰ داد. نبود خروجی را همراه کد خروج تفسیر کنید؛ اگر stderr را پنهان کرده باشید، فایل ناموجود هم ممکن است فقط با وضعیت خطا معلوم شود.
| وضعیت | معنی برای GNU diff/cmp |
|---|---|
0 |
تفاوت پیدا نشد |
1 |
تفاوت وجود دارد |
2 |
اشکال اجرا؛ مانند مسیر ناموجود یا دسترسی ناکافی |
برای مقایسهٔ چند فایل مستقل از انتقال، هش معتبر هم کاربرد دارد، ولی محل تفاوت متن را نشان نمیدهد.
۴. فاصله، پایان خط و فایل باینری
دو فایل ممکن است در ظاهر یکسان باشند ولی CRLF و LF، فاصلهٔ انتهای خط یا encoding متفاوت داشته باشند. cmp چنین تفاوتی را هم اختلاف بایتی میبیند. diff برای متن خوانا مناسبتر است؛ فایل فشرده و تصویر را با اجبار به متن تبدیل نکنید.
نکته: گزینههای نادیدهگرفتن فاصله میتوانند اختلاف را پنهان کنند. در فایلهایی که فاصله معنایی دارد، مانند YAML یا کد، ابتدا مقایسهٔ عادی را ببینید. «با یک گزینه خروجی خالی شد» به معنی بیخطر بودن تفاوت نیست.
۵. مقایسه به معنی مجوز اعمال تغییر نیست
- فایل درست و مسیر هر دو نسخه را تأیید کنید.
- اگر محتوا رمز یا کلید دارد، خروجی diff را عمومی ارسال نکنید.
- برای بررسی یک مقدار، فقط بخش ضروری را با پاکسازی اطلاعات به اشتراک بگذارید.
- diff را به patch یا کپی روی فایل زنده وصل نکنید مگر طرح تغییر و بازیابی جدا دارید.
تفاوت پورت در این نمونه صرفاً نمایشی است؛ مقاله توصیه نمیکند پورت سرور شما تغییر کند. خروجی باید به تصمیم کمک کند، نه اینکه خودکار جای نسخهٔ فعلی را بگیرد.
۶. نتیجهٔ قابل ثبت
نام دو نسخه، تاریخ بررسی، فرمان و کد خروج را ثبت کنید. اگر تفاوت مهمی پیدا شد، دلیل مورد انتظار یا غیرمنتظرهبودن آن را جدا توضیح دهید. در نبود SSH، مقایسهٔ نسخههای دانلودشده در محیط مجاز محلی هم ممکن است؛ برای یافتن خود فایلها، راهنمای File Manager مکمل این مسیر است.
هر دو مسیر ورودی diff یا cmp باید به فایلهای موردنظر اشاره کنند؛ برای تشخیص تفاوت مسیرها، راهنمای pwd و cd و مسیرهای لینوکس را ببینید.
۷. مسیر مطالعهٔ مرتبط
- آموزش اتصال به سرور با SSH در ویندوز، لینوکس و مک
- File Manager سیپنل از صفر؛ آپلود، ویرایش، فشردهسازی و سطل زباله
۸. منابع و روش بررسی
منابع رسمی در ۲۴ اکتبر ۲۰۲۶ بررسی شدند. نمونههای فرمان با دادهٔ آموزشی در GNU/MSYS روی ویندوز بررسی شدهاند؛ این محیط، سرور لینوکس بومی نیست. رفتار مالکیت و دسترسی فایلسیستم باید روی سیستم مقصد جدا بررسی شود.