Copiar uma pasta 100% fiel a original?

1. Copiar uma pasta 100% fiel a original?

Apprentice X
ApprenticeX

(usa FreeBSD)

Enviado em 15/12/2024 - 22:00h

Boa Noite a todos.
Não estou conseguindo clonar uma pasta, o que tentei abaixo não funciona!

Detalhando:
Fiz uma instalação do Debian em uma partição. Montei a partição na pasta /mnt/hd1

Eu sempre estava acostumado a clonar uma pasta de sistema com o comando: cp -rp * /mnt/hd
Ou seja, eu estava na pasta que desejava copiar e executava o comando acima, e tudo ficava 100%

Porém no Debian o comando acima não funciona, pois o Debian usa Hardlinks, então tentei: cp -Rpa * /mnt/hd1
Porém também não fica 100% igual

Então apelei para: rsync -aHAX --progress /mnt/hd1/ /data/bcks/debian/1
Que também não fica 100% igual

Também tentei compactando com tar: tar --exclude='./1.tar.xz' -cf - . | xz -vvT16 --lzma2=preset=9e,dict=1024MiB,lc=4,pb=0,mode=normal,nice=273,mf=bt4,depth=1000 --memlimit=30GiB -c - > 1.tar.xz
Mas dá os mesmos resultados dos 2 comandos acima, ou seja, não ficam iguais

Pelo konqueror uma das diferenças estava no atalho /bin onde em /mnt/hd1/ ele ocupa 20480 bytes e na cópia ocupa 16384 bytes
Comparando os arquivos dentro da pasta seus tamanhos batem, ou seja, o problema é no atalho apenas
Mas também encontrei problemas semelhantes em outros locais

No Geral a pasta original tem: 942.1 MiB (987,833,949), 17,885 files, 2,346 sub-folders
E a cópia : 941.8 MiB (987,567,709), 17,885 files, 2,346 sub-folders
Ou seja a mesma qtd de arquivos e pastas mas tamanhos diferentes, dando uma diferença de 266,240 bytes

As tentativas de cópia acima, eu fiz usando um LiveCd do Slackware, copiando o sistema raiz de /dev/nvme0n1p2 que foi montado em /mnt/hd1
Para /dev/sda1 montado em /data na pasta acima informada

Logo não consigo confiar em uma cópia backup que usarei para restauração se elas não forem 100% idênticas, e não sei o porque não consigo copiar a raiz do Debian 12 com os comandos que estou acostumado que funcionam em outros sistemas como FreeBSD, Slackware, Arch Linux

Não entendo como um atalho pode ter um tamanho e outro atalho apontando para o mesmo lugar um tamanho diferente, e dentro das pastas para onde esses atalhos apontam serem exatamente iguais em tamanho.
Outro ponto, se eu replico o atalho no pelo konqueror ou seja, fazendo uma copia do link arrastando ele e dando outro nome em /mnt/hd1 o tamanho bate 100% ou seja 20480 e se eu fizer o mesmo manualmente assim para onde quero copiar em /data/bcks/debian/1 o tamanho também fica 100% igual e correto com 20480. Porém não posso para um backup apenas arrastar as pastas para outra pasta porque bagunçaria as permissões dos arquivos, e não entendendo pq cp, rsync ou tar-xz não conseguem copiar com fidelidade!

Se alguém puder me ajudar, agradeço. Qualquer explicação que me ajude a entender essa maluquice também ajuda!

OBS: Não posso usar "dd" pois muitas vezes comparo os backups para saber o que mudou nos arquivos quando dá um problema, e tratam-se de backups que preciso confiar na hora de restaurar


  


2. Re: Copiar uma pasta 100% fiel a original?

Alexa Bolada
alexabolada

(usa Debian)

Enviado em 15/12/2024 - 22:01h

Boa noite!

Entendo sua frustração em relação à cópia fiel de pastas no Debian, especialmente quando você está acostumado com outros sistemas operacionais. Vamos tentar esclarecer algumas questões.

### Comandos para cópia de pastas

1. **Usando `cp`**:

O comando que você usou, `cp -rp * /mnt/hd1`, pode não manter hardlinks e outros atributos de arquivo. O uso da opção `-a` (archive) é recomendado, pois preserva a maior parte das propriedades dos arquivos.

Aqui está um comando de cópia que geralmente funciona bem no Debian:

cp -a /path/original/ /path/destino/

Note que o caminho original deve ter a barra no final para garantir que o conteúdo da pasta seja copiado corretamente.

2. **Usando `rsync`**:

Você usou o `rsync` com a opção `-aHAX`, o que está correto para preservar a maioria dos atributos, incluindo hardlinks, permissões e timestamps.

Um comando para tentar é:

rsync -aHAX --progress /mnt/hd1/ /data/bcks/debian/1/

Note que a barra no final também é importante para garantir a cópia adequada.

3. **Usando `tar`**:

O uso do `tar` é uma boa


3. Re: Copiar uma pasta 100% fiel a original?

aguamole
aguamole

(usa KUbuntu)

Enviado em 16/12/2024 - 06:25h

Cara, vc checo se seu FS está integro? estranho d+.

Alguém sabe se FS diferentes faz com que o tamanho dos arquivos sejam ligeiramente diferentes?


4. Re: Copiar uma pasta 100% fiel a original?

Buckminster
Buckminster

(usa Debian)

Enviado em 16/12/2024 - 10:52h

Usei o diretório Vídeos como exemplo e criei diretório e arquivos dentro dele.
Veja a sequência abaixo.

debina@debiantop:~/Vídeos$ ls
debina@debiantop:~/Vídeos$
debina@debiantop:~/Vídeos$ sudo cp -rp * /mnt/hd
cp: alvo '/mnt/hd': Arquivo ou diretório inexistente
debina@debiantop:~/Vídeos$ sudo cp -Rpa * /mnt/hd
cp: alvo '/mnt/hd': Arquivo ou diretório inexistente
debina@debiantop:~/Vídeos$ sudo vim teste
debina@debiantop:~/Vídeos$ sudo vim teste1
debina@debiantop:~/Vídeos$ ls
teste teste1
debina@debiantop:~/Vídeos$ cd /mnt
debina@debiantop:/mnt$ ls
debina@debiantop:/mnt$ mkdir hd
mkdir: não foi possível criar o diretório “hd”: Permissão negada
debina@debiantop:/mnt$ sudo mkdir hd
debina@debiantop:/mnt$ ls
hd
debina@debiantop:/mnt$ cd hd
debina@debiantop:/mnt$ ls
debina@debiantop:/mnt$
debina@debiantop:/mnt$ cd
debina@debiantop:~$ cd Vídeos
debina@debiantop:~/Vídeos$ sudo cp -rp * /mnt/hd
debina@debiantop:~/Vídeos$ cd /mnt/hd
debina@debiantop:/mnt/hd$ ls
teste teste1
debina@debiantop:/mnt/hd$


E depois:
debina@debiantop:~/Vídeos$ sudo mkdir hd1
debina@debiantop:~/Vídeos$ ls
hd1 teste teste1
debina@debiantop:~/Vídeos$ cd hd1
debina@debiantop:~/Vídeos/hd1$ sudo vim teste2
debina@debiantop:~/Vídeos/hd1$ ls
teste2
debina@debiantop:~/Vídeos/hd1$ sudo vim teste3
debina@debiantop:~/Vídeos/hd1$ ls
teste2 teste3
debina@debiantop:~/Vídeos/hd1$ cd ..
debina@debiantop:~/Vídeos$ ls
hd1 teste teste1
debina@debiantop:~/Vídeos$ sudo cp -rp * /mnt/hd
debina@debiantop:~/Vídeos$ cd /mnt/hd
debina@debiantop:/mnt/hd$ ls
hd1 teste teste1
debina@debiantop:/mnt/hd$ cd hd1
debina@debiantop:/mnt/hd/hd1$ ls
teste2 teste3
debina@debiantop:/mnt/hd/hd1$

Veja que o comando cp -rp * /mnt/hd deu certo.

1 - Você tem certeza absoluta que em outros sistemas a cópia é fiel em todos os tamanhos?

2 - Geralmente dará essa diferença

"No Geral a pasta original tem: 942.1 MiB (987,833,949), 17,885 files, 2,346 sub-folders
E a cópia : 941.8 MiB (987,567,709), 17,885 files, 2,346 sub-folders"

porque toda cópia é feita de um diretório para outro que está localizado/referenciado/linkado/etc em outro lugar do HD/SD, então o tamanho total geralmente não dará igual.
O que importa é que todas as pastas, sub-pastas e arquivos foram copiados com seus conteúdos intactos e iguais.
A diferença no total são o que podemos chamar de "metadados" (informações adicionais do processo de cópia).
Mesmo em arquivos de sistema iguais, por exemplo, copiar de ext4 para ext4 dará essa diferença por causa do processo de cópia que fica registrado (local, data, hora, etc) e se forem diferentes, por exemplo, ext4 para xfs, ext4 para ntfs, etc, sempre dará essa diferença por que são FS diferentes.

Veja que as permissões de hd1, teste e teste1 ficaram iguais, mas as permissões dos arquivos ocultos ficaram diferentes porque as permissões dos diretórios de origem e destino são diferentes, o que é normal, sendo que eles não foram copiados.

debina@debiantop:/mnt/hd$ ls -la
total 20
drwxr-xr-x 3 root root 4096 dez 16 09:20 .
drwxr-xr-x 3 root root 4096 dez 16 09:15 ..
drwxr-xr-x 2 root root 4096 dez 16 09:36 hd1
-rw-r--r-- 1 debina debina 54 dez 16 09:08 teste
-rw-r--r-- 1 debina debina 17 dez 16 09:12 teste1
debina@debiantop:/mnt/hd$

debina@debiantop:~/Vídeos$ ls -la
total 20
drwxr-xr-x 3 debina debina 4096 dez 16 09:17 .
drwx------ 38 debina debina 4096 dez 16 09:19 ..
drwxr-xr-x 2 root root 4096 dez 16 09:19 hd1
-rw-r--r-- 1 debina debina 54 dez 16 09:08 teste
-rw-r--r-- 1 debina debina 17 dez 16 09:12 teste1
debina@debiantop:~/Vídeos$


Depois criei o diretório hd2 dentro de hd e usei o comando
debina@debiantop:~/Vídeos$ cp -r * /mnt/hd
para copiar, veja abaixo os tamanhos.

Tamanho em bytes com o comando du

Original:
debina@debiantop:~/Vídeos$ du -hsb hd1
4143 hd1
debina@debiantop:~/Vídeos$

Cópia:
debina@debiantop:/mnt/hd/hd2$ du -hsb hd1
4143 hd1
debina@debiantop:/mnt/hd/hd2$


Veja com ls -l retornando em bytes

debina@debiantop:~/Vídeos$ ls -l
total 12
drwxr-xr-x 2 root root 4096 dez 16 09:19 hd1
-rw-r--r-- 1 debina debina 54 dez 16 09:08 teste
-rw-r--r-- 1 debina debina 17 dez 16 09:12 teste1

debina@debiantop:/mnt/hd/hd2$ ls -l
total 12
drwxr-xr-x 2 root root 4096 dez 16 09:19 hd1
-rw-r--r-- 1 debina debina 54 dez 16 09:08 teste
-rw-r--r-- 1 debina debina 17 dez 16 09:12 teste1

Veja que até de um comando para outro (du ou ls) dá diferença de tamanho.
E coloquei ali somente os últimos tamanhos, mas tanto com cp -r ou cp -rp os tamanhos deram iguais.
Faça testes você aí.
Lembrando que o parâmetro -p preserva as propriedades, a data e a hora do arquivo original.
O parâmetro -a preserva tudo, até links simbólicos.
$ man cp

Acredito que somente usando dd você fará uma cópia fiel (clone), pois o dd copia bit por bit por isso é demorado, mas você falou que não pode usar dd.


_________________________________________________________
Always listen the Buck!
Enquanto o cursor estiver pulsando, há vida!


5. Re: Copiar uma pasta 100% fiel a original?

Ricardo Groetaers
ricardogroetaers

(usa Linux Mint)

Enviado em 16/12/2024 - 18:20h

aguamole escreveu: Alguém sabe se FS diferentes faz com que o tamanho dos arquivos sejam ligeiramente diferentes?

Se voce se refere ao tamanho ocupado pelo arquivo no FS, a resposta é sim (ressaltando "ligeiramente diferentes").
Considere que FS diferentes podem usar tamanho de clusters (unidades de alocação) diferentes.
Considere também as peculiaridades do Gerenciador de arquivos e ou o "comando" usado.


6. Re: Copiar uma pasta 100% fiel a original?

Fábio Farias
Fabio_Farias

(usa openSUSE)

Enviado em 17/12/2024 - 13:24h



Considere que FS diferentes podem usar tamanho de clusters (unidades de alocação) diferentes.
Considere também as peculiaridades do Gerenciador de arquivos e ou o "comando" usado.


E ainda levar em consideração o nível de fragmentação da unidade de origem e destino que também interfere nesse cálculo.








Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts