Copie apenas novos arquivos - isso é possível? Basicamente, deseja mesclar duas pastas

14

Eu tenho uma pasta na Unidade 1 chamada Música e tem 100 GB. Eu tenho uma pasta no Drive 2 chamada Music e tem 116 GB. É a versão mais atualizada. Como copiar a pasta Música do Drive 2 para o Drive 1 sem precisar reescrever todos os arquivos?

Dallas
fonte
Qual versão do OS X você está usando?
Nix
1
Estou usando 10.7.4. Quando copio a pasta de uma unidade para a outra, perguntam-me se quero substituir. Nenhuma opção de mesclagem.
Dallen

Respostas:

5

A opção de mesclagem será exibida apenas se você estiver copiando (em vez de mover) a pasta. Mantenha pressionado optionenquanto arrasta a nova pasta para o local da pasta antiga. Como alternativa, usar + cpara copiar a nova pasta e + vpara colar sobre a pasta antiga deve oferecer a opção de mesclar os arquivos.

Nix
fonte
Ainda parece escrever sobre arquivos que não precisam ser reescritos. Usando rsyncvez
BRogers
Mesmo que a opção de mesclagem esteja disponível, às vezes não funciona (apenas relata um erro e não faz nada) - especialmente no caso de grandes pastas, como no seu caso. É outra razão pela qual você deve usar o rsync.
Andrzej Martyna
24

Este é um caso de uso clássico para o rsync:

rsync -av /source-path/source-dir /destination-path

O rsync copiará apenas arquivos novos e alterados para o novo local.

É importante entender como funciona uma barra final no argumento de origem. Se houver uma barra final, o conteúdo de / source-path / source-dir será copiado para o caminho de destino . Se não houver uma barra final, o próprio diretório de origem será copiado para o destino e seu conteúdo será outro nível abaixo na hierarquia de destinos.

Portanto, se você deseja replicar um caminho para outro, inclua a barra à direita da seguinte maneira:

rsync -av /sourcepath/sourcedir/ /duplicatpath/sourcedir/
John D.
fonte
1
Great catch! E se você estiver fazendo isso de várias unidades (ou em qualquer lugar do seu computador) e não quiser digitar os diretórios, basta arrastar uma unidade (usb externo ou cápsula do tempo) ou apenas um diretório específico e adicioná-lo ao comando para você. Basta arrastar o local de destino para terminais
BRogers
Cara, muito obrigado por sugerir a barra final. Passei a nossa ponderando por que o rsync -av ./foo/bar / vol1 / foo / bar estava copiando todos os arquivos existentes. Barras sangrentas lol !!!
sming
4

ATUALIZAR

Primeiro instale o coreutils primeiro. Corra brew install coreutils. Se você não tiver brewinstalado ... volte para o Windows!

Verifique se cp --versiongera a versão cp (GNU coreutils) 8. ^^

Então você terá a cpversão correta e o -usinalizador funcionará.


Verifique o cpcomando Use man cpe leia as opções. Você pode fazer algo como:

cp -r -u ~/source ~/destination

-R, -r , --recursive: copia diretórios recursivamente
-u , --update: copia apenas quando o arquivo SOURCE é mais recente que o arquivo de destino ou quando o arquivo de destino está ausente
-p mesmo que --preserve = mode, owner , timestamps
-v --verbose: explique o que está sendo feito

Portanto, se você deseja copiar arquivos da pasta Downloads / música para dizer sua pasta Música / nova , faça algo como: Isso mesclaria o conteúdo dessas duas pastas e, se existirem dois arquivos com o mesmo nome e caminho, manterá o mais recente, com base no carimbo de data e hora.
cp -ruvp ~/Downloads/music/* ~/Music/new/

drew7721
fonte
Tem certeza de que a opção -u funciona com o comando cp no OSX? Estou recebendo a mensagem "cp: opção ilegal - u" no Sierra. Parece que nem todos os comandos são iguais aos do Linux.
OMA
Experimente o comando cp --help e veja se a opção está disponível. Ou verifique a versão cp - e verifique se está atualizada. Eu estou usando: cp (coreutils GNU) 8,27
drew7721
Infelizmente, -u não é um sinalizador válido para cp no OS X. Seria muito conveniente ter!
Por Queston Aronsson
Infelizmente esta resposta está incorreta.
William Cerniuk
use brew install coreutilspara obter a cpversão correta .
drew7721
0

Não sei por que o botão Lion Merge padrão não aparece para mim. Mas acabei usando ditto. Encontrado aqui: https://superuser.com/a/221599/102789

Dallas
fonte
1
SEJA CUIDADOSO! idem não mantém arquivos mais recentes, sempre substitui o destino pela fonte. Se o arquivo de origem for mais antigo, ele eliminará o novo arquivo e o substituirá por um arquivo antigo #
FrancescoMM
isso mesmo - aviso muito importante do FrancescoMM, use rsync #
Andrzej Martyna