root@server # tar fcz bkup.tar.gz /home/foo/
tar: Removing leading `/' from member names
Bu sorunu nasıl çözebilir ve /
dosya adlarını tutabilirim ?
-C /
çıkartırken belirtin .
root@server # tar fcz bkup.tar.gz /home/foo/
tar: Removing leading `/' from member names
Bu sorunu nasıl çözebilir ve /
dosya adlarını tutabilirim ?
-C /
çıkartırken belirtin .
Yanıtlar:
Bu özelliği devre dışı bırakmak için --absolute-names
veya -P
seçeneğini kullanın .
tar fczP bkup.tar.gz /home/foo/
tar fcz bkup.tar.gz --absolute-names /home/foo
-C /
@Marcus'un cevabında açıklanan seçeneği kullanmak, birincil amacınızsa, STDERR mesajından kurtulacaktır.
Bu aslında bir özellik, problem değil. Mutlak konumları olan arşivler bir güvenlik riskidir. Saldırganlar, bu tür arşivleri, kullanıcıları kritik sistem konumlarına dosya yükleme konusunda kandırmak için kullanabilirler.
Evet, kullanabilirsiniz -P
. Peki tar'nın öne eğik çizgiyi kaldırmasına izin vermek ve yalnızca arşiv kullanıcısının kök dizinde çıkarmayı açıkça yapmasını istemek yanlış mı? O zaman bilinçli olarak kritik sistem konumlarını etkiliyorlar ve kazayla yapamıyorlar.
tar
. Bu mesaj, başarılı bir şekilde yanlış e-posta uyarıları almamı sağlayan tar
bir durumdan çıkmaya 1
neden oldu, çünkü tar
bu mesajı STDERR'ye yazıyordu. Bu sorunu @ Marcus'un çözümünün cd /path/to/network/share && tar -cJf scripts.backup.tar.xz -C / home/user/scripts 2>/dev/null || [send an email alert]
-P
- örneğin, FUSE’de bir tür dosya sistemi görüntü yakalama özelliği sağlıyorsanız. Bazı durumlarda cwd
, kullanıcının bakış açısından değil, belirli bir dizindeki anlık görüntüyü kaldırmak isteyebilirsiniz .
STDERR'ye basılan "Baştaki` / "üye adlarından çıkarılması" ndan kurtulmak istiyorsanız, ama yine de bu önde gelen eğik çizgileri varsayılan olarak zekice olduğu gibi zekice olduğu gibi bırakmak istiyorsanız, yorumcu timsoft tarafından burada mükemmel bir çözüm gördüm .
Çözüm, dizini kök (/) olarak değiştirmek için -C seçeneğinin kullanılmasını, ardından eğik çizgi olmadan arşivlenecek dosya ağacını belirtmeyi içerir , çünkü şimdi sadece göreceli bir yola ihtiyacınız vardır. Bu, normal tar tar komutuyla aynı şeyi yapar ancak sıyırmaya gerek yoktur:
tar fcz bkup.tar.gz -C / home/foo/
tar c -C / home/foo/*
) İle gösterilen tar tar dosyalarını kullanmak istiyorsanız , çünkü kabuk değiştirilen kök hakkında bir şey bilmiyordur. Ancak diğer durumlar için hala iyi bir cevap.
-C /
benim için çalışmıyor, dönem. Benim için stderr engellemez.
Bir ay gecikti, ancak durumum için en uygun çözümü buldum (bir kabuk komut dosyasında) ana dizine gidip oradaki komutu çalıştırmak.
cd /var/www/
tar -czf mysite.gz mysite
Onun yerine:
tar -czf /var/www/mysite.gz /var/www/mysite
Ben kaba kuvvet yöntemini kullanarak bunu nasıl yaptı budur: 2>&1 | grep -v "Removing leading"
.
Örneğin:
tar -cf "$BKUPDIR/${BKUPFILE}.tar" --overwrite --exclude '.*' --one-file-system "$SRCDIR" 2>&1 | grep -v "Removing leading"
tar
verebilir 2
.