گیک فارسی

نوشته های یک گیک فارسی از فعالیت ها ،‌ علاقه مندی ها و نقد هایش

شکستن فایل‌های حجیم به فایل‌های کوچکتر در لینوکس

نویسنده:
۱۹ بهمن ۹۶

وقتی با سایت‌های بزرگ کار میکنی و حجم اطلاعات زیاد میشه نسخه پشتیبان گرفتن از فایل‌ها و اطلاعات پایگاه داده ناگزیر خواهد بود. قطعاً این فایل‌ها هم باید از روی سرویس دهنده اصلی دانلود و بر روی DVD و مدیا های پشتیبان دیگر ذخیره شوند.

هرچقدر حجم فایل‌ها بزرگ باشه برای دانلود مشکلات دو چندان میشه و امکان Resume نشدن و کلاً دانلود مجدد وجود داره ، اگه هم نیاز باشه فایل‌ها را روی سرویس های Cloud Storage مجزا از سرویس دهنده اصلی ذخیره کنیم ، محدودیت حجمی ارسال و دریافت فایل روی خیلی از خدمات وجود داره.

راه حل این هست که فایل‌های بزرگ را به قطعات کوچیکتر تقسیم کنیم و هر زمان بهشون نیاز داشتیم اون ها را به هم متصل و از فایل اصلی استفاده کنیم. برای این کار لینوکس ابزار بسیار خوبی داره به نام Split ، مثلاً با دستور زیر میشه یک فایل ۱۰ گیگابایتی را به ۱۰ فایل ۱ گیگابایتی تقسیم کرد:

split -b 1000M backup.zip backup.

این دستور فایل‌های ۱ گیگابایتی با نام هایی مثل backup.aa و backup.ab و … خواهد ساخت. حالا هر زمان احتیاج داشتیم فایل اصلی یعنی backup.zip را داشته باشیم با دستور زیر فایل اصلی را بازسازی میکنیم:

cat backup.a? > backup.zip

گیت (Git) و مشکل تغییر Permission ها و نیاز به Staged کردن دوباره فایل ها

نویسنده:
۱۴ بهمن ۹۶

من از Git و مخازنم (Repo ها) در مکان‌های مختلفی استفاده میکنم و Permission ها و تغییرات توی دسترسی فایل‌ها سیستم به سیستم متفاوت هست. اخیراً متوجه شدم برخی مواقع وقتی میخوام Pull کنم یکسری فایل که تغییری هم نداشتن به عنوان تغییر یافته نیاز به Staged شدن توسط Git گزارش میشه که خیلی این موضوع برام عجیب بود.

بعد از استفاده از git diff و خروجی که به صورت Old Mode و New Mode بود متوجه شدم به خاطر تغییر Permission هست که Git اعلام تغییر میکنه و میخواد فایل دوباره Staged بشه.

خوب دقیقاً نمیدونم چرا چنین بررسی لازم هست اما قطعاً میدونم روی ماشین‌های Development من نیازی نیست بررسی روی تغییرات chmod یا همون Permission ها انجام بشه. پس دنبال راه حل گشتم و متوجه شدم با دستور زیر توی مخزن جاری میشه اون را غیر فعال کرد:

git config core.filemode false

اگه هم مثل من میخواین روی کل Repo ها اعمال بشه Global غیر فعال کنین :

git config --global core.filemode false