Eu sou relativamente novo usando tar tendo usado arquivos zip no passado.
Eu quero apenas criar o arquivo tar sem os diretórios serem incluídos.
Eu fui aqui, mas achei um pouco confuso.
https://www.baeldung.com/linux/tar-archive-without-directory-structure
# Backup crontab
crontab -l > /home/andy/bin/crontab_backup.txt
tar -cvf /home/andy/bin/crontab_backup.tar /home/andy/bin/crontab_backup.txt
Para o seu exemplo específico, se você
cd
omitir/home/andy/bin
esse caminho nos comandos, obterá o resultado desejado:Esta é a sugestão em 3.2 Usando o comando tar no diretório de destino na página à qual você vinculou e é provavelmente a maneira mais simples para esse problema específico.
O equivalente a 3.1. Usar a opção -C para um único diretório seria:
Existe outra opção que não é mencionada na página vinculada:
--transform
, que nos permite usar umas/<pattern>/<replacement>/
expressão como emsed
.Com o GNU,
tar
você pode usar a-C
opção de alterar o diretório no meio do comando. Os nomes de arquivos ainda são registrados em relação ao diretório atual, então isso significa que você pode fazer isso:e se você quiser coletar dois arquivos de diretórios diferentes, poderá fazer isso:
O
tar
comando realmente não tem opções para não armazenar a estrutura de diretórios, de acordo com a filosofia linux de "faça uma coisa e faça bem feito".A página a que você se refere fornece alguns truques para armazenar arquivos sem a estrutura de diretórios. No entanto, esses truques são muito limitados em seu poder e exigem que você especifique cada diretório de nível mais baixo que contém arquivos. O truque já falhará se também houver arquivos em diretórios no meio da árvore. Tarring estes incluirá os diretórios inferiores.
Como tal, não é possível de forma totalmente automatizada. Uma maneira mais automatizada exigiria a preparação de um diretório contendo todos os arquivos da árvore de diretórios no diretório de nível superior primeiro e, em seguida, tar esse diretório. Em um sistema de arquivos que suporta permissões linux, isso pode ser feito usando hard links, portanto, nenhum espaço extra é necessário para a cópia temporária.
Você poderia fazer isso com
find
:então você pode tar o diretório
dir
em/path/to/new
.