قبل از آنکه به تشریح این موضوع بپردازیم، اجازه دهید به شکل کوتاه مفهوم Hard Link در لینوکس را معرفی کنیم. در دنیای لینوکس شما مفهومی به نام Inode دارید که اطلاعات مرتبط با یک فایل را نگهداری کرده و لینوکس برای شناسایی فایلها و مکان فایلها از آنها استفاده میکند. زمانی که در لینوکس میانبر یا پیوندی را به شکل پیوند سخت ایجاد میکنید، میانبر شما به Inode فایل موردنظر (شمارهای که برای شناسایی مکان فایل استفاده میشود) اشاره دارد. در نتیجه اگر فایل جابهجا شده یا نامش تغییر کند، اهمیتی نداشته و پیوند بدون مشکل کار میکند، زیرا پیوند ایجاد شده به جای آنکه مرتبط با نام فایل باشد با Inode در ارتباط است. Hard Link مزایای دیگری نیز دارد که توصیف آن خارج از حوصله این مطلب است.
مقایسه فایلها با فرمان diff
به احتمال زیاد سادهترین راه مقایسه دو فایل، فراخوانی فرمان diff است. خروجی این فرمان تفاوت میان دو فایل را نشان میدهد. این فرمان سوییچهای مختلفی دارد، اما زمانی که بدون هیچ سوییچی و تنها همراه با نام فایلها از آن استفاده کنید، تفاوتهای دو فایل را نشان میدهد. در مثال زیر، خطوط اضافی در فایل backup.html وجود دارند.
$ diff index.html backup.html
2438a2439,2441
> <pre>
> That's all there is to report.
> </pre>
اگر diff هیچ خروجی را ارائه نکند، به معنای آن است که فایلها یکسان هستند.
$ diff home.html index.html
$
تنها نقطه ضعف دستور فوق در مقایسه همزمان تنها دو فایل است.
بهکارگیری checksums
فرمان cksum که در اصطلاح تخصصی به آن چکیده اعتبارسنجی (checksum) میگویند برای ارزیابی چکسام فایلها استفاده میشود. چکیده اعتبارسنجی یک مقدار عددی ریاضی است. درست است که این رقم منحصر به فرد نیست، اما بازهم برای بررسی و مقایسه محتوای درون فایلها قابل استفاده است. اگر مقدار چکسام دو فایل یکسان باشد به معنای آن است که فایلها محتوای یکسانی دارند.
$ cksum *.html
2819078353 228029 backup.html
4073570409 227985 home.html
4073570409 227985 index.html
در مثال بالا، شما مشاهده میکنید که فایلهای دوم و سوم دارای چکسام یکسانی هستند و میتوان اینگونه تصور کرد که یکسان هستند.
فراخوانی فرمان find
در حالی که فرمان find گزینه مشخصی برای پیدا کردن فایلهای تکراری ندارد، اما میتواند برای جستوجوی فایلها بر مبنای نام یا نوع و همزمان با فراخوانی cksum استفاده شود.
$ find . -name "*.html" -exec cksum {} \;
4073570409 227985 ./home.html
2819078353 228029 ./backup.html
4073570409 227985 ./index.html
بهکارگیری فرمان fslint
فرمان fslint برای پیدا کردن خاصمنظوره فایلهای تکراری قابل استفاده است. دقت کنید که ما یک نقطه شروع در اختیار این فرمان قرار میدهیم. بسته به نوع فراخوانی و اجرا تکمیل جستوجو ممکن است زمانبر باشد. این فرمان فایلهای تکراری را همراه با پوشه و شناسه آنها فهرست میکند.
$ fslint .
-----------------------------------file name lint
-------------------------------Invalid utf8 names
-----------------------------------file case lint
----------------------------------DUPlicate files <==
home.html
index.html
-----------------------------------Dangling links
--------------------redundant characters in links
------------------------------------suspect links
--------------------------------Empty Directories
./.gnupg
----------------------------------Temporary Files
----------------------duplicate/conflicting Names
------------------------------------------Bad ids
-------------------------Non Stripped executables
شاید برای فراخوانی fslint مجبور شوید آنرا نصب کنید.
بهکارگیری فرمان rdfind
فرمان rdfind نیز برای پیدا کردن فایلهای تکراری (محتوای یکسان) استفاده میشود. این فرمان بر مبنای تاریخ فایلها قادر است مشخص کند که چه فایلهایی اصلی هستند و چه فایلهایی بعدا اضافه شدهاند. در نتیجه برای پیدا کردن موارد تکراری و حذف آنها کاربردی است.
$ rdfind ~
Now scanning "/home/shark", found 12 files.
Now have 12 files in total.
Removed 1 files due to nonunique device and inode.
Total size is 699498 bytes or 683 KiB
Removed 9 files due to unique sizes from list.2 files left.
Now eliminating candidates based on first bytes:removed 0 files from list.2 files left.
Now eliminating candidates based on last bytes:removed 0 files from list.2 files left.
Now eliminating candidates based on sha1 checksum:removed 0 files from list.2 files left.
It seems like you have 2 files that are not unique
Totally, 223 KiB can be reduced.
Now making results file results.txt
بهکارگیری فرمان fdupes
فرمان fdupes نیز برای پیدا کردن فایلهای تکراری قابل استفاده بوده و با سوییچهای متنوعی قابل استفاده است. در ابتداییترین شکل این فرمان فایلهای تکراری را شبیه به حالت زیر گروهبندی میکند.
$ fdupes ~
/home/shs/UPGRADE
/home/shs/mytwin
/home/shs/lp.txt
/home/shs/lp.man
/home/shs/penguin.png
/home/shs/penguin0.png
/home/shs/hideme.png
ماهنامه شبکه را از کجا تهیه کنیم؟
ماهنامه شبکه را میتوانید از کتابخانههای عمومی سراسر کشور و نیز از دکههای روزنامهفروشی تهیه نمائید.
ثبت اشتراک نسخه کاغذی ماهنامه شبکه
ثبت اشتراک نسخه آنلاین
کتاب الکترونیک +Network راهنمای شبکهها
- برای دانلود تنها کتاب کامل ترجمه فارسی +Network اینجا کلیک کنید.
کتاب الکترونیک دوره مقدماتی آموزش پایتون
- اگر قصد یادگیری برنامهنویسی را دارید ولی هیچ پیشزمینهای ندارید اینجا کلیک کنید.
نظر شما چیست؟