وضع القشرة: استخدم أنبوبًا كمدخل للقطران

StackOverflow https://stackoverflow.com/questions/2379482

  •  24-09-2019
  •  | 
  •  

سؤال

أحاول معرفة طريقة لاستخدام أنابيب TAR+على LTS خادم Ubuntu.

لقد حصلت على أمر postgresql (pg_dump) الذي يخرج الكثير من SQL على الإخراج القياسي:

pg_dump -U myUser myDB

أعرف كيفية إعادة توجيه ذلك إلى ملف:

pg_dump -U myUser myDB > myDB.sql

من أجل حفظ بعض مساحة القرص ، أفضل الضغط عليها: يمكنني القيام بملف tar.gz من هذا mydb.sql ، ثم حذف mydb.sql.

لكنني كنت أتساءل - هل هناك طريقة للقيام بذلك دون إنشاء ملف .SQL المتوسط؟ أعتقد أن هذا يمكن إنجازه بالأنابيب ... ومع ذلك ، فأنا لست معلمًا قذيفًا ، ولا أعرف سوى القليل عنهم (أنا قادر على القيام به ls | more, ، هذا كل شئ). لقد جربت العديد من الاختلافات pg_dump .. | tar ... ولكن مع عدم وجود نجاح.

كيف يمكنني استخدام أنبوب لاستخدام إخراج pg_dump كمدخل للقطر؟ أو هل أخطأت في شيء ما؟

هل كانت مفيدة؟

المحلول

لا أرى كيف تُشكال "القطران" في هذا على الإطلاق ؛ لماذا لا تضغط ملف التفريغ نفسه فقط؟

pg_dump -U myUser myDB | gzip > myDB.sql.gz

ثم ، لاستعادة:

gzip -cd myDB.sql.gz | pg_restore ...

الأداة المساعدة "TAR" هي لتجميع مجموعة من الملفات والأدلة في ملف واحد (الاسم هو تقلص "أرشيف الشريط"). في هذا الصدد ، يكون ملف "TAR" من نوعه مثل ملف "zip" ، باستثناء أن "zip" ينطوي دائمًا على الضغط في حين أن "TAR" لا.

لاحظ أخيرًا أن "GZIP" ليس "Zip". فائدة "GZIP" مجرد ضغطات لا يصنع المحفوظات.

نصائح أخرى

في حالة الاستخدام الخاصة بك pg_dump ينشئ ملف واحد فقط يحتاج إلى ضغط. كما ألمح آخرون ، في *nix land ، يكون الأرشيف عبارة عن ملف واحد يمثل نظام ملفات. تمشيا مع أيديولوجية يونيكس أداة واحدة لكل مهمة, ، الضغط هو مهمة منفصلة عن الأرشيف. نظرًا لأن الأرشيف عبارة عن ملف يمكن ضغطه ، كما يمكن لأي ملف آخر. لذلك ، نظرًا لأنك تحتاج فقط إلى ضغط ملف واحد ، فإن TAR ليس ضروريًا لأن الآخرين قد أوضحوا بالفعل بشكل صحيح.

ومع ذلك ، فإن عنوانك وعلاماتك سيجلب القراء المستقبليين هنا الذين قد يتوقعون ما يلي ...


دعنا نقول أن لديك مجلد كامل مليء بالنسخ الاحتياطية postgresql للأرشيف والضغط. يجب أن يتم ذلك بالكامل باستخدام القطران -z أو --gzip علَم يستدعي أداة GZIP.

لذلك دعنا نقول أيضًا أنك بحاجة إلى تشفير أرشيف قاعدة البيانات الخاصة بك استعدادًا لنقلها إلى حل احتياطي محظور خارج الموقع (مثل متجر كائنات متوافق مع S3). ودعنا نفترض أنك تحب تشفير الرمز المميز (كلمة المرور) المشتركة مسبقًا باستخدام AES Cipher.

سيكون هذا موقفًا صالحًا حيث قد ترغب في تنشيط البيانات من وإلى القطران.

أرشيف -> ضغط -> تشفير

tar cz folder_to_encrypt | openssl enc -aes-256-cbc -e > out.tar.gz.enc

decrypt -> uncembus -> استخراج

openssl enc -aes-256-cbc -in ./out.tar.gz.enc -d | tar xz --null

هل تشير إلى وثائق GNU TAR ل تفاصيل كيف ال --null يعمل Flag Works وأمثلة أكثر فائدة للحالات الأخرى التي قد تحتاج فيها إلى تنشيط الملفات إلى القطران.

tar لا يضغط ، ما تريد gzip أو أداة ضغط similat

يأخذ القطران أسماء الملفات كمدخلات. ربما تريد فقط gzip إخراج pg_dump مثل ذلك:

pg_dump -U myUser myDB |gzip > myDB.sql.gz
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top