ردیابی فایل ها در لینوکس بخش مهمی از مدیریت سیستم است. چه در حال بررسی یک مشکل امنیتی در سرور باشید یا چه اشکالزدایی یک برنامه ، جزئیات مربوط به زمان ایجاد یک فایل میتواند بینشهای مهمی را ارائه دهد که مشکل شما را رفع میکند.
در این پست وبلاگ، ما جند روش برای پیدا کردن زمان ایجاد یک فایل در لینوکس را بررسی خواهیم کرد. با ما همراه باشید!
پيش نياز
برای دنبال کردن مثالهای موجود در این پست وبلاگ، باید به یک سیستم عامل لینوکس دسترسی داشته باشید. برای هدف این پست وبلاگ، از اوبونتو به عنوان توزیع لینوکس انتخابی خود استفاده خواهم کرد.
آشنایی با مفهوم زمان ایجاد فایل در لینوکس
قبل از پرداختن به موضوع اصلی چگونگی پیدا کردن زمان ایجاد یک فایل، داشتن درک اولیه از زمان فایل در لینوکس و اینکه چرا یافتن تاریخ/زمان ایجاد فایل ممکن است همیشه ساده نباشد، مهم است.
سه نوع مهر زمانی(برچسب زمانی) وجود دارد که معمولاً با یک فایل در لینوکس مرتبط است:
atime
(زمان دسترسی): این زمانی است که فایل آخرین بار دسترسی داشته استctime
(زمان تغییر): این زمانی است که تغییراتی در ابرداده فایل ایجاد شده است. توجه داشته باشید که علیرغم آنچه از نام ممکن است نشان دهد، این زمان ایجاد فایل نیست.mtime
(زمان اصلاح): این زمانی است که محتوای فایل آخرین بار اصلاح شده است.
با این حال،درکل، لینوکس زمان واقعی ایجاد یک فایل را که به عنوان زمان تولد شناخته می شود، ردیابی نمی کرد. اضافه شدن زمان ایجاد فایل (زمان تولد) نسبتاً جدید است و به طور جهانی در همه سیستمهای فایل پشتیبانی نمیشود.
در لینوکس، یک فایل سیستم تعریف می کند که چگونه یک سیستم عامل ذخیره سازی و بازیابی داده ها را مدیریت می کند. هر فایل سیستم دارای ساختار و قوانین خاصی برای کنترل نحوه نامگذاری، ذخیره و سازماندهی فایلها است.
اگر متوجه شدید که در فایل سیستم(فرمت)ای هستید که زمان تولد را پشتیبانی نمی کند، هیچ راهی برای بازیابی زمان ایجاد فایل وجود ندارد.
فایل سیستم (فرمت )توزیع لینوکس خود را بررسی کنید
برای بررسی فایل سیستم توزیع لینوکس خود، دستور زیر را اجرا کنید:
df -T
با اجرای این دستور، تمام فایل سیستمهای نصب شده مانند شکل زیر فهرست میشوند:
فایل سیستم نصب شده بر روی / سیستم فایل اصلی است. سیستم فایل اولیه نقطه شروع برای کل سلسله مراتب سیستم فایل است و هر سیستم فایل و ساختار دایرکتوری دیگری از آن منشعب می شود. اساساً، این پایه یا “root” است که ساختار دایرکتوری کل سیستم را تشکیل می دهد.
همانطور که در بالا می بینید، سیستم فایل ext4 بر روی / نصب شده است و آن را به سیستم فایل اصلی در توزیع لینوکس مورد استفاده (اوبونتو) تبدیل می کند.
در مرحله بعد، بیایید سه روش مختلف را بررسی کنیم تا بفهمیم یک فایل در لینوکس چه زمانی ایجاد شده است.
1.تاریخ/زمان ایجاد فایل را با استفاده از دستور stat پیدا کنید
ابتدا اجازه دهید یک فایل جدید به نام demo.txt ایجاد کنیم. ترمینال خود را باز کنید و دستور زیر را اجرا کنید:
touch demo.txt
پس از ایجاد فایل، دستور زیر را اجرا کنید تا مسیر کامل آن مشخص شود:
realpath demo.txt
مسیر کامل فایل را که در ترمینال نمایش داده می شود، مانند شکل زیر مشاهده خواهید کرد:
این اطلاعات را در دسترس داشته باشید؛ ما در ادامه به آن نیاز خواهیم داشت.
حالا بیایید از دستور stat
برای بدست آوردن زمان ایجاد فایل demo.txt استفاده کنیم. دستور زیر را اجرا کنید:
stat demo.txt
پس از اجرای این دستور، خروجی مشابه این را خواهید دید:
این خروجی اطلاعات زیادی در مورد فایل ارائه می دهد. خطی که ما به دنبال آن هستیم خطی است که با Birth
شروع می شود (در بالا قسمت برجسته شده است). این تاریخ و زمان ایجاد فایل است.
در خروجی بالا، Birth time 2023-06-27 10:25:50.479994998 +0530
است، به این معنی که فایل demo.txt
در 26 ژوئن 2023 در ساعت 10:25:50 به وقت محلی ایجاد شده است.
توجه: قسمت .479994998 +0530
در مهر زمانی 20232023-06-27 10:25:50.479994998 +0530
به ترتیب نشان دهنده کسری از ثانیه و فاصله منطقه زمانی از زمان هماهنگ جهانی (UTC) است.
2.تاریخ/زمان ایجاد فایل را با استفاده از دستور debugfs پیدا کنید
راه دیگری که می توانیم تاریخ و زمان ایجاد فایل را پیدا کنیم استفاده از دستور debugfs
است. اما ابتدا باید دیوایس فایل سیستم فایل سیستم خود را شناسایی کنیم، زیرا دستور debugfs
به این اطلاعات نیاز دارد تا به درستی کار کند. در اینجا نحوه دریافت آن آمده است:
دستور زیر را اجرا کنید:
df -T
خروجی چیزی شبیه این خواهد بود:
در اینجا، /dev/sda3
دیوایس فایل سیستم ما است که فایل سیستم ext4
را نگه می دارد.
توجه: در لینوکس، دستگاه های ذخیره سازی به صورت فایل نمایش داده می شوند و در دایرکتوری/dev/
که مخففdevice
(دیوایس) است، قرار دارند. به هر دستگاه ذخیره سازی یک شناسه داده می شود که نشان دهنده یک دستگاه سخت افزاری خاص در سیستم شما است.
اکنون که اطلاعات دیوایس فایل سیستم را در اختیار داریم، می توانیم از دستور debugfs
برای بررسی زمان ایجاد استفاده کنیم. دستور زیر را اجرا کنید:
sudo debugfs -R 'stat /home/hemanta/demo.txt' /dev/sda3
توجه: چون demo.txt
در دایرکتوری root قرار ندارد، باید مسیر کامل فایل demo.txt
را نسبت به root فایل سیستم ارائه کنیم.
پس از اجرای دستور بالا، سیستم رمز عبور را می خواهد. پس از وارد کردن رمز عبور، خروجی مشابه زیر را مشاهده خواهید کرد:
در اینجا crtime
زمان ایجاد فایل است. مهر زمانی(تایماستمپ) بعد از crtime
تاریخ و زمان ایجاد فایل demo.txt
است.
اکنون، q
را فشار دهید تا به فرمان ترمینال برگردید.
توجه داشته باشید که وقتی دستور debugfs
را اجرا می کنیم، خروجی در یک نمایشگر و با فرمت اسکرول ارائه می شود. به همین دلیل است که برای خروج از بیننده و بازگشت به ترمینال، q را فشار می دهیم.
در اینجا crtime زمان ایجاد فایل است. مهر زمانی(تایماستمپ) بعد از crtime تاریخ و زمان ایجاد فایل demo.txt است.
اکنون، q را فشار دهید تا به فرمان ترمینال برگردید.
توجه داشته باشید که وقتی دستور debugfs
را اجرا می کنیم، خروجی در یک نمایشگر و با فرمت قابل اسکرول ارائه می شود. به همین دلیل است که برای خروج از بیننده(viewer) و بازگشت به ترمینال، q
را فشار می دهیم.
3.تاریخ/زمان ایجاد فایل را با استفاده از دستور ls پیدا کنید
دستور ls
یکی از پرکاربردترین دستورات در لینوکس است. گزینه ای به نام --time
دارد که می توان از آن برای یافتن زمان ایجاد یک فایل استفاده کرد.
برای یافتن زمان ایجاد فایل demo.txt دستور زیر را اجرا کنید:
ls -l –time=birth demo.txt
پس از اجرای این دستور خروجی مشابه زیر دریافت خواهید کرد: در خروجی بالا مشاهده می کنیم که فایل demo.txt در تاریخ 27 ژوئن ساعت 10:25 ایجاد شده است.
جمع بندی
در این پست، ما سه دستور متمایز – stat، debugfs، و ls (با عنوان “–time=birth”) را برای تعیین تاریخ/زمان ایجاد یک فایل در لینوکس بررسی کردیم. بنابراین،هر کدام را شما میتوانید با توجه به نیاز خود استفاده کنید امیدواریم که از خواندن مقاله اطلاعات سودمندی کسب کرده باشید.