همانطور که میدانید در لینوکس با استفاده از دستور `md5sum`، میتوان هش [MD5](https://en.wikipedia.org/wiki/MD5) محتوای یک فایل را به دست آورد. میتوان از این مقدار برای بررسی مساوی بودن محتوای دو فایل استفاده کرد، به این صورت که اگر مقدار هش دو فایل برابر باشد به احتمال بسیار زیاد محتوای آن فایلها با هم کاملاً یکسان است.
اکنون ما میخواهیم دو پوشه را با هم مقایسه کنیم و ببینیم که آیا محتوای این دو پوشه کاملاً یکسان است یا خیر. از نظر ما دو پوشه یکسان هستند اگر اولاً ساختار داخلی دو پوشه (پوشهبندیها و مسیر فایلها) دقیقاً یکسان باشد و محتوای فایلهای متناظر کاملاً یکسان باشد. یعنی هر دو فایل متناظر، آدرس نسبی یکسانی داشته باشند (نسبت به پوشه خود، در مسیر یکسانی قرار گرفته باشند) و محتوای یکسانی نیز داشته باشند. (اطلاعاتی مانند owner, permission, time فایلها را در نظر نمیگیریم).
بنابراین در مثال زیر، با فرض یکسان بودن محتوای فایلهای با نام یکسان، دو پوشه `dir1` و `dir2` یکسان نیستند چون ساختار داخلی متفاوتی دارند. اما `dir1` و `dir3` با این که نامهای متفاوتی دارند، یکسان هستند (زیرا محتوای یکسانی دارند).
```
dir1
├── file1
└── file2
dir2
├── file1
└── file2
└── file2
dir3
├── file1
└── file2
```
برای این مقایسه میخواهیم با استفاده از `md5sum` یک هش برای هر پوشه به دست بیاوریم و برای مقایسه پوشهها، هش پوشهها را با هم مقایسه کنیم.
یک اسکریپت Bash با نام `md5sum4dir.sh` بنویسید که آدرس یک پوشه را بگیرد و در خروجی، هش آن پوشه را بنویسد. هش تولیدشده باید مانند خروجی `md5sum` یک رشته hex به طول ۳۲ باشد.
```bash
$ bash md5sum4dir.sh path/to/some/dir
b459813010c9760d7ba32bed678c3752
```
اسکریپت `md5sum4dir.sh` را Zip کنید و به عنوان پاسخ ارسال کنید. دقت کنید که اسکریپت باید مستقیماً در ریشه فایل Zip باشد (در هیچ پوشهای نباشد).
لینوکس، Directory Checksum
ارسال پاسخ برای این سؤال
در حال حاضر شما دسترسی ندارید.