Tar.gz arşivine dosya eklemenin/güncellemenin bir yolu var mı? Temel olarak,
/data/data/com.myapp.backup/./files/settings.txt 'Da bir dosya içeren bir arşivim var ve bu dosyayı arşivden (zaten yapılmış) çekmek ve düzenleme yapıldıktan sonra tekrar arşive geri itmek istiyorum. Bunu nasıl başarabilirim? Yoldaki
. Nedeniyle sorunlu mu?
Tar dosya formatı sadece birkaç başlık ile birleştirilmiş dosya serisidir. Onu parçalamak, içeriklerinizi koymak ve tekrar bir araya getirmek çok karmaşık bir iş değil. Olduğu söyleniyor, Jander açıkladı bir program olarak katran bunu yapmak için yardımcı işlevlere sahip değildir ve sıkıştırmadan önce ve sonra bir değişiklik yapması gereken ek komplikasyonlar vardır.
Ancak, iş için araçlar var! Sıkıştırılmış katran arşivinin geri döngü montajını bir klasöre yapmanıza ve daha sonra dosya sisteminde değişiklik yapmanıza izin verecek en az iki sistem var. İşiniz bittiğinde klasörü çıkarın ve sıkıştırılmış arşiviniz aktarılmaya hazırdır.
Dosyanızı arşivinizden almak için
tar xzf archive.tar.gz my/path/to/file.txt Kullanabilirsiniz. Dosya yolundaki dizinlerin de oluşturulacağını unutmayın. Arşivdeki dosyaları listelemek için
tar t Kullanın (yani
tar tzf archive.tar.gz).
tar dosyaların "yerinde" güncellenmesini desteklemez. Ancak, arşivde bulunan bir dosyayla aynı yola sahip olsalar bile, arşivin sonuna dosya ekleyebilirsiniz. Bu durumda, dosyanın her iki kopyası da arşivde olur ve daha sonra eklenen dosya öncekini geçersiz kılar. Bunun için kullanılacak komut
tar r (Veya yalnızca arşivden daha yeni dosyaları eklemek için
tar u Komutudur). Yoldaki
. Sorun olmamalı.
Ancak bir yakalama var: sıkıştırılmış bir arşive ekleyemezsiniz. Yani yapmanız gerekenler:
gunzip archive.tar.gz tar rf archive.tar data/data/com.myapp.backup/./files/settings.txt gzip archive.tar
Muhtemelen duymak istediğiniz şey değildir, çünkü tüm arşivi iki kez yeniden yazmak anlamına gelir. Çok büyük bir arşiv değilse, her şeyin yıldızını kaldırmak ve ardından düzenledikten sonra yeniden katlamak daha iyi olabilir. Alternatif olarak, sıkıştırılmamış bir arşiv kullanabilirsiniz.
Tar başlangıçta kasetler için kullanılacaktı, bu yüzden dosyaları "değiştirmek" gerçekten tasarımda değil. Ancak, dosyayı orijinal katrandan silmek için --delete, sonra da tar'ı güncellemek ve dosyayı yeniden eklemek için -u kullanabilirsiniz. Katranın arşivi dahili olarak yeniden düzenlemesi gerektiğinden biraz zaman alabilir.