Como copiar arquivos modificados enquanto preserva a estrutura de pastas

4

Eu fiz muitas alterações em arquivos no meu projeto PHP e quero enviar essas mudanças para o nosso servidor via FTP do FileZilla. Em vez de enviar todos os arquivos, gostaria de encontrar apenas os arquivos que foram modificados nos últimos 14 dias e copiá-los para uma pasta /ModifiedFiles , preservando a estrutura da pasta. Dessa forma, posso simplesmente arrastar o conteúdo da pasta /ModifiedFiles para o FileZilla e sobrescrever todos os arquivos necessários nas pastas apropriadas.

Se eu estivesse usando o Windows, poderia executar essa linha de código e conseguiria o que eu quero:

xcopy RUF_Donation_Web ModifiedFiles /S /V /I /R /D:02-09-2016

Como posso fazer isso no meu terminal Bash no meu Mac (OS X Yosemite)?

    
por Tod Birdsall 23.02.2016 / 16:14

2 respostas

5

Esse é um trabalho típico para cpio ou pax :

find . -type f -mtime -14 -print0 | pax -0 -rw /ModifiedFiles

Você também pode usar a opção -l para criar links em vez de cópias. Ele não funciona corretamente com o comando pax no Debian, mas talvez o do OS / X não tenha o mesmo problema.

Você pode fazer algo semelhante com cpio (um ancestral de pax ), mas a implementação de cpio no OS / X não suporta uma opção -0 / --null que permitiria a utilização arbitrária nomes de arquivos. Se você sabe que os nomes dos seus arquivos não contêm caracteres de nova linha, ainda é possível fazer isso:

find . -type f -mtime -14 | cpio -dp /ModifiedFiles

As versões Debian (GNU) e OS / X de cpio também possuem uma opção -l para criar links em vez de cópias. (e o do Debian parece funcionar corretamente).

    
por 23.02.2016 / 18:26
2

O que você está tentando implementar é construir no rsync. Você pode apenas rsync -a /source /dest . Você pode colocar isso em um script simples e adicioná-lo como um trabalho cron. Se você quiser manter registros do que foi copiado, você pode anexar a opção --log-file=[File] . Você pode encontrar mais informações aqui: link

    
por 23.02.2016 / 16:30