Se você quiser espelhar um esqueleto de diretório e copiar nenhum arquivo:
find -type d -links 2 -exec mkdir -p "/path/to/backup/{}" \;
O que está acontecendo aqui:
- Localizar apenas selecionando diretórios
- Estamos usando
-links 2
para encontrar os diretórios mais detalhados possíveis . -
mkdir -p
fará com que todos os diretórios ausentes sejam exibidos ao longo do caminho.
Eu fiz assim, em vez de find -type d -exec mkdir -p "/path/to/backup/{}" \;
, porque isso vai reduzir o custo total de mkdir
de chamadas. Podemos rapidamente provar isso com um pequeno teste. Aqui está a árvore de teste seguida pelo que eu corri para comparar os dois comandos:
$ tree
.
├── dir1
│ ├── dir2
│ │ └── dir3
│ ├── dir7
│ └── dir8
└── dir9
└── dir0
$ pr -m -t <(find -type d) <(find -type d -links 2)
. ./dir1/dir8
./dir1 ./dir1/dir2/dir3
./dir1/dir8 ./dir1/dir7
./dir1/dir2 ./dir9/dir0
./dir1/dir2/dir3
./dir1/dir7
./dir9
./dir9/dir0
E isso só vai melhorar em uma solução de palavras reais com milhares de diretórios.