rsync move arquivos, deixa diretórios?

4

Estou usando rsync para copiar dados entre meus discos rígidos internos e externos. É feito o que eu preciso, mas estou ficando sem espaço no meu disco rígido interno. Então, existe alguma maneira de obter rsync para funcionar como mv em vez de cp , mas também deixar o "esqueleto" de diretórios vazios no local original, apenas apagando os arquivos, para que eu possa colocar mais arquivos nos diretórios e rsync novamente para adicionar os novos arquivos ao drive externo, sem apagar os antigos?

Ou, se houver um programa diferente de rsync com suporte ao Linux que possa realizar isso, tudo bem também.

    
por Lucas Phillips 07.12.2013 / 17:42

1 resposta

6

Existe uma opção especial em rsync :

   --remove-source-files
          This tells rsync to remove  from  the  sending  side  the  files
          (meaning  non-directories)  that  are a part of the transfer and
          have been successfully duplicated on the receiving side.

          Note that you should only use this option on source  files  that
          are quiescent.  If you are using this to move files that show up
          in a particular directory over to another host, make  sure  that
          the  finished  files  get renamed into the source directory, not
          directly written into it, so that rsync can’t possibly  transfer
          a  file that is not yet fully written.  If you can’t first write
          the files into a different directory, you should  use  a  naming
          idiom  that lets rsync avoid transferring files that are not yet
          finished (e.g. name the  file  "foo.new"  when  it  is  written,
          rename  it  to  "foo"  when  it is done, and then use the option
          --exclude='*.new' for the rsync transfer).

          Starting with 3.1.0, rsync will  skip  the  sender-side  removal
          (and  output an error) if the file’s size or modify time has not
          stayed unchanged.

A exclusão de arquivos na destionação depende das suas opções. Mas, afair, ele não excluirá nada enquanto você não usar nenhuma opção --delete , --delete-before , etc.

    
por 07.12.2013 / 17:57