PDA

View Full Version : گفتگو: ایا unlink واقعا فایل رو پاک میکنه؟



DelDard
یک شنبه 30 شهریور 1393, 16:39 عصر
سلام دوستان
من هر چی سرچ کردم که چه طور فایل های یک فولدر رو پاک کنم همه جا زده بود unlink ولی تو خود php.net یه بابایی گفته واقعا فایل پاک نمیشه و اگه فایل های شما حجمش زیاد باشه به فضای ازاد هاردتون چیزی اضافه نمیشه!! => http://php.net/manual/en/function.unlink.php

حالا من میخام صحت این قصه رو بدونم که ایا واقعا همین طوره یا نه چون خودم به خاطر حجم بالای فایل هایی که کاربرا تو سرور اپ کردن میخام (بعد از بک اپ) پاکشون کنم و این برام مهم شده

تشکر

wallfa
یک شنبه 30 شهریور 1393, 17:44 عصر
شاید واقعا در فایل های بزرگ صحت داشته باشه اونم توی یونیکس

DelDard
یک شنبه 30 شهریور 1393, 19:31 عصر
شاید واقعا در فایل های بزرگ صحت داشته باشه اونم توی یونیکس
من یک فایل بزرگ رو نمیخام پاک کنم. میخام چند هزار فایل کوچیک رو که تو یه فولدر هستند هم زمان پاک کنم که هارد پر نشه


اگه کسی تجربه کرده بگه که فایل ها واقعا پاک میشه (تو یونیکس) خیال من راحت شه. ممنون رفقا

eshpilen
دوشنبه 31 شهریور 1393, 08:25 صبح
تو خود php.net یه بابایی گفته واقعا فایل پاک نمیشه و اگه فایل های شما حجمش زیاد باشه به فضای ازاد هاردتون چیزی اضافه نمیشه!!
متن اصلیش رو بذار ببینیم چی گفته.

alireza.stack
دوشنبه 31 شهریور 1393, 08:33 صبح
unlink پاک کردن خود فایل نیست بلکه پاک کردن اسم فایل است.

آنطور که در Manual گفته شده است (و البته در نظرات)، یک فایل ممکن است چند لینک داشته باشد (مبحث soft link و hard link در لینوکس) به همین خاطر اگر فایل تنها یک لینک داشته باشد محتوای فایل هم پاک می شود در غیر اینصورت فقط آن لینک حذف می شود و فایل سر جایش خودش می ماند و فضای مورد نظر را اشفال می کند.

در کیس شما گویا فایلها ارتباطی با جایی ندارند و مانند لاگ و ... هستند و لینکی ندارند جز خود فایل. شما فایلها را پاک کنید و فضای تخصیص داده شده می بایست آزاد شود.

DelDard
دوشنبه 31 شهریور 1393, 08:44 صبح
Deleted a large file but seeing no increase in free space or decrease of disk usage? Using UNIX or other POSIX OS?

The unlink() is not about removing file, it's about removing a file name. The manpage says: ``unlink - delete a name and possibly the file it refers to''.

Most of the time a file has just one name -- removing it will also remove (free, deallocate) the `body' of file (with one caveat, see below). That's the simple, usual case.

However, it's perfectly fine for a file to have several names (see the link() function), in the same or different directories. All the names will refer to the file body and `keep it alive', so to say. Only when all the names are removed, the body of file actually is freed.

The caveat:
A file's body may *also* be `kept alive' (still using diskspace) by a process holding the file open. The body will not be deallocated (will not free disk space) as long as the process holds it open. In fact, there's a fancy way of resurrecting a file removed by a mistake but still held open by a process...


این خدمت شما اقای اشپیلن



در کیس شما گویا فایلها ارتباطی با جایی ندارند و مانند لاگ و

ممنون علی رضای عزیز. فایل های من jpg هستند تو یه فولدر image که کاربرا اپلود کردند. اینی که گقتم شامل حرف شما میشه؟ این که فایل ها با جایی ارتباط نداردند؟

alireza.stack
دوشنبه 31 شهریور 1393, 09:33 صبح
با unlink حجم باید آزاد بشه (تصاویر رو به جایی لینک نکردی شما فقط آپلود کردی ) و شما باید disk usage کمتری پیدا کنین. اول ببینید کل حجم تصاویر چقدر است تا کامل در جریان پاک کردن و مقدار فضای آزاد شده باشید.

eshpilen
دوشنبه 31 شهریور 1393, 18:29 عصر
این خدمت شما اقای اشپیلن
Deleted a large file but seeing no increase in free space or decrease of disk usage? Using UNIX or other POSIX OS?
...

آهان این قضیه hard link و اینا رو گفته.
نه به کار شما ربطی نداره. شما unlink کن فایل پاک میشه و فضاش هم آزاد میشه.
البته همونطور که در این متن هم اشاره کرده، اگر موقعی که فایلی رو unlink میکنید اون فایل توسط پردازشی در حالت باز باشه، تا زمانی که فایل توسط پردازش بسته نشه فضای اون فایل روی دیسک آزاد نمیشه (اما اسم و تشکیلات خود فایل در ظاهر پاک میشه). البته اینم به کار شما ربط چندانی نداره و محض اطلاع و برای موارد خاص ذکر کردم.