Mengontrol laju kompresi gzip sambil mengarsipkan file dengan tar?

3

Saya memiliki skrip yang secara berkala mencadangkan direktori menggunakan perintah " tar -czvf [nama] [direktori] " tetapi masalah saya adalah skrip baru-baru ini telah menempatkan banyak tekanan pada server (Minecraft SMP) dan cenderung ketinggalan pemain saat kembali, yang baru-baru ini telah memakan waktu hampir 5 menit.

Jadi saya perlu tahu apakah ada cara untuk mengontrol laju kompresi GZip pada saat yang sama yang mengarsipkan dan membuat cadangan file?

Saya mengerti bahwa saya pertama-tama dapat tar file dan kemudian GZip secara terpisah dengan tingkat kompresi yang berbeda setelah itu, tetapi ini tidak akan berhasil karena ini menamai file dengan waktu server saat ini, yang kadang-kadang berubah di antara perintah.

Adakah wawasan? Sebelumnya terima kasih.


sumber
1
ini bukan pertanyaan pemrograman; mungkin lebih baik pada pengguna listrik atau situs linux / unix stackexchange.
jcomeau_ictx
3
Saya minta maaf, saya hanya memposting di sini karena itu adalah bagian dari skrip shell .. Saya menemukan masalah saya, perbaikan sederhana adalah dengan meletakkan " GZIP = - [level kompresi] " segera sebelum perintah tar seperti: GZIP=-[compression level] tar -czvf [name].tar.gz [directory]

Jawaban:

2

Melakukannya dalam dua langkah mungkin lebih portabel. Jika Anda membutuhkan cap waktu, simpan dulu:

filename=/what/ever/backup-$(date +%Y%m%d%H%M%S).tar
tar cvf $filename ...
gzip -1 $filename

Saya juga menyarankan Anda melihat ke dalam nicedan ionice. Mereka dapat membantu Anda mengurangi efek cadangan pada responsif server.

Tikar
sumber
Saya benar-benar menyelesaikannya dengan cara lain dengan menggunakan GZIP=-[compression level] tar -czvf [name].tar.gz [directory]di mana saya menggunakan 1 untuk tingkat kompresi, tapi saya pasti akan mencoba metode Anda untuk membuat nama cadangan lebih seragam dan mudah-mudahan mengurangi lag lebih banyak lagi dengan mengubah prioritas yang merupakan sesuatu yang tidak pernah terlintas dalam pikiran saya sebelumnya. Terima kasih banyak.
1

Mungkin sedikit terlambat, tetapi ini bisa membantu orang lain ...

Jika Anda mencadangkan data serupa secara berkala, Anda harus mempertimbangkan untuk membuat salinan pada awalnya (dan tidak mengompresnya, jadi pada dasarnya membuat hanya file tar) dan kompres nanti lebih banyak salinan cadangan. Dalam hal server Minecraft Anda mungkin membuat beberapa cadangan setiap hari. Anda dapat menjadwalkan mengompresi cadangan tersebut bersama-sama dengan algoritma yang kuat seperti setiap hari atau lebih, menjalankannya ketika tidak ada terlalu banyak orang di server. Kelambatan akan lebih lama, tetapi intinya adalah bahwa arsip yang dihasilkan akan sangat kecil (karena sebagian besar file dunia tidak berubah sama sekali di antara cadangan). Dan jika Anda memiliki daya cadangan pada beberapa inti (yang kemungkinan besar) kompresi akan menggunakannya (dan menyebabkan kelambatan yang lebih rendah ke seluruh server), mungkin meningkatkan kinerja selama pencadangan.

Amunak
sumber
0

Saya sering melakukan sesuatu seperti ini sehingga ketika proses tar selesai, saya tidak harus ingat untuk gzip karena semuanya dilakukan pada satu baris:

tar cvf - $nameOfDirOrFileToBeBackedUp | gzip -$compressionLevel > $backupLocation/$nameOfDirOrFileToBeBackedUp.tar.gz

Metode ini berfungsi pada tar versi lama yang tidak mendukung gzip (Solaris 10 masih tidak).

AndrewPK
sumber