ربط مجلدين ببعضهم بـ symlink

ZaFaR97 • منذ 6 سنوات

السلام عليكم
بالنسبة لي أبغى اربط محتوى مجلد بمجلد آخر بواسطة symlink

عندنا مجلد releases فيه مجلدq_12345 فيه ملف test.php
تمام ؟

نبغى نربطهم بمجلد project
فيه مسبقا ملف test.php.

تمام : الآن ابغاه يستبدل لي مجلّد project بالموجود في مجلّد q_12345

ln -snf /var/releases/q_12345/* /var/project

# النتيجة
يتمّ ربط كلّ ملفٍ على حده#


ln -snf /var/releases/q_12345/ /var/project

#> النتيجة
يتمّ انشاء مجلد q_12345 داخل مجلد project# 

ولو جعلنا مجلد باسم project داخل مجلّد q_12345 .

ln -snf /var/releases/q_12345/* /var/

# النتيجة رفض cannot overwrite project

# ولو جربنا
ln -snf /var/releases/q_12345/* /var/project
# النتيجة يُنشئ مجلد preoject/project

ليش كذا ؟ودي أربط مجلد بمجلد، بحيث يتم ربط المحتويات مع المجلد الآخر.

الطريقة الأولى بإضافة * تربط جميع المحتويات ولكن بشكل منفرد، وأعتقد أنها ليست الطريقة الصحيحة

/var/releases/
- - - - - - - q_12345/
- - - - - - - - - - - project/test.php

/var/project/test.php

# أو

/var/releases/
- - - - - - - q_12345/
- - - - - - - - - - - test.php

/var/project/test.php
كلمات دليلية: symlink

الإجابة الصحيحة

ZaFaR97 • منذ 6 سنوات

الحمدلله، توصّلت إلى المشكلة وهي مكتوبة بالأزرق أدناه وفي الأسفل تفاصيل إضافية علّها تفيد،والشكر للأخ مؤيّد الجشي، والأخ Ali Majrashi والأخ {‏ℬ} بدر

 

 الخطأ الذي وقعت فيه أنا ، أنني كنت أنشىء مجلد dep مثلا، واضع بداخله ملف one
ثم أذهب واعمل symlink  للمحتويات الموجودة في dep_update إلى مجلد dep
هنا يقوم النظام تلقائيا باستبدال الملفات بنفس الاسم، لكن لا يدعم فعل ذلك مع المجلّدات

المفترض أن لا أنشئ مجلّدًا، ويكون مجلد dep موجودًا في dep_update

1- الحلّ الأول البديهي كان حذف المجلّد إن وِجد بـ rm لكن المشكلة لديّ  العديد من العمليات التي تعمل حاليًا، بالتالي قد تُفقد وتتوقّف، والحلّ كذلك قد يستغرق وقتًا إن كان المجلّد كبيرًا
2 -الحل الثاني سابقًا عمل mv للمجلّد لإسم آخر، ثمّ ننفذ أمر ln -snf . لكي يتم كتابة المجلّد من جديد. ( طبعا الـ opcache راح يستلم تنفيذ الملفاتـ حتّى ولو تغيّر اسم المجلد. لكن أعتقد لو حذفته يحذفه من الكاش. والله أعلم، عموما الحذف يستغرق وقتًا. )

3 - الحلّ أو التوضِيح الذي أفاد بهِ الأخ مؤيّد الجشي جزاهُ الله خيرًا
" أن الـ symlink يكون اختصار، فيفترض أن لا يكون المجلّد موجودًا مسبقا ".

الخطأ الذي وقعت فيه أنا ، أنني كنت أنشىء مجلد dep مثلا، واضع بداخله ملف one
ثم أذهب واعمل symlink للمحتويات الموجودة في dep_update إلى مجلد dep .
هنا يقوم النظام تلقائيا باستبدال الملفات بنفس الاسم، لكن لا يدعم فعل ذلك مع المجلّدات.

طبعًا بحثت حتّى تفككت عظامي من الصباح بكل اللغات. ولم انتبه للنقطة التي ذكرها الأخ مؤيّد الجشي!
وهذا نابع عن جهل بآليّة وكيفية عمل تقنية الـ symlink التي قرأت فيها ولكن على السريع جدًا.

ولم أجد تنبيهًا يعلّمني أنّ عليّ أن لا أُنشئ المجلّد من البداية !

وشكرا جدًا للأخ مؤيّد الجشي فقد نجح الأمر.

فقط احذف المجلد، واعمل اختصار، وسيقوم بتبديل الاختصارات وان احتوت على مجلدات أو خرافات أخرى.

الإجابات (1)

ZaFaR97 • منذ 6 سنوات
الإجابة الصحيحة

الحمدلله، توصّلت إلى المشكلة وهي مكتوبة بالأزرق أدناه وفي الأسفل تفاصيل إضافية علّها تفيد،والشكر للأخ مؤيّد الجشي، والأخ Ali Majrashi والأخ {‏ℬ} بدر

 

 الخطأ الذي وقعت فيه أنا ، أنني كنت أنشىء مجلد dep مثلا، واضع بداخله ملف one
ثم أذهب واعمل symlink  للمحتويات الموجودة في dep_update إلى مجلد dep
هنا يقوم النظام تلقائيا باستبدال الملفات بنفس الاسم، لكن لا يدعم فعل ذلك مع المجلّدات

المفترض أن لا أنشئ مجلّدًا، ويكون مجلد dep موجودًا في dep_update

1- الحلّ الأول البديهي كان حذف المجلّد إن وِجد بـ rm لكن المشكلة لديّ  العديد من العمليات التي تعمل حاليًا، بالتالي قد تُفقد وتتوقّف، والحلّ كذلك قد يستغرق وقتًا إن كان المجلّد كبيرًا
2 -الحل الثاني سابقًا عمل mv للمجلّد لإسم آخر، ثمّ ننفذ أمر ln -snf . لكي يتم كتابة المجلّد من جديد. ( طبعا الـ opcache راح يستلم تنفيذ الملفاتـ حتّى ولو تغيّر اسم المجلد. لكن أعتقد لو حذفته يحذفه من الكاش. والله أعلم، عموما الحذف يستغرق وقتًا. )

3 - الحلّ أو التوضِيح الذي أفاد بهِ الأخ مؤيّد الجشي جزاهُ الله خيرًا
" أن الـ symlink يكون اختصار، فيفترض أن لا يكون المجلّد موجودًا مسبقا ".

الخطأ الذي وقعت فيه أنا ، أنني كنت أنشىء مجلد dep مثلا، واضع بداخله ملف one
ثم أذهب واعمل symlink للمحتويات الموجودة في dep_update إلى مجلد dep .
هنا يقوم النظام تلقائيا باستبدال الملفات بنفس الاسم، لكن لا يدعم فعل ذلك مع المجلّدات.

طبعًا بحثت حتّى تفككت عظامي من الصباح بكل اللغات. ولم انتبه للنقطة التي ذكرها الأخ مؤيّد الجشي!
وهذا نابع عن جهل بآليّة وكيفية عمل تقنية الـ symlink التي قرأت فيها ولكن على السريع جدًا.

ولم أجد تنبيهًا يعلّمني أنّ عليّ أن لا أُنشئ المجلّد من البداية !

وشكرا جدًا للأخ مؤيّد الجشي فقد نجح الأمر.

فقط احذف المجلد، واعمل اختصار، وسيقوم بتبديل الاختصارات وان احتوت على مجلدات أو خرافات أخرى.

لايوجد لديك حساب في عالم البرمجة؟

تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !