copie arquivos ao pular arquivos existentes - unix
<p>gostaria de pegar uma pasta grande (~ 100 gb) e copiá-la para outra pasta. gostaria de pular todos os arquivos que existem (não pastas), por isso, se <code>/music/index.html</code> não existe, ainda assim copiaria mesmo que o <code>/music</code> diretório já existe.</p><p>encontrei <a href="https://superuser.com/questions/118781/copy-files-in-linux-avoid-the-copy-if-files-do-exist-in-destination">this</a> , mas meu shell está dizendo <code>-u</code> não é um argumento válido.</p><p>eu não sei como <code>rsync</code> funciona, então, deixe-me saber se essa é uma solução melhor.</p><p>obrigado.</p>
<p>sempre use <code>rsync</code> para copiar arquivos, porque é ótimo.</p><p>para ignorar arquivos existentes:</p><pre><code>rsync --ignore-existing --recursive /src /dst </code></pre><p>leia o <a href="http://linux.die.net/man/1/rsync">manual</a> e pesquise muitos exemplos excelentes. especialmente a combinação com o ssh faz com que <code>rsync</code> seja uma ótima ferramenta para conexões lentas e não confiáveis, devido à sua <code>--partial</code> opção. adicionar <code>--verbose</code> para ver quais arquivos estão sendo copiados. verifique também a infinidade de opções relacionadas à preservação de permissões, usuários e registros de data e hora.</p>
<p>você precisará da cauda. alguns exemplos:</p><pre><code>$ tail great-big-file.log &lt; last 10 lines of great-big-file.log &gt; </code></pre><p>se você realmente precisar skip um número específico de "primeiras" linhas, use</p><pre><code>$ tail -n +&lt;n+1&gt; &lt;filename&gt; &lt; filename, excluding first n lines. &gt; </code></pre><p>isto é, se você quiser pular n linhas, você começa a imprimir a linha n + 1. exemplo:</p><pre><code>$ tail -n +11 /tmp/myfile &lt; /tmp/myfile, starting at line 11, or skipping the first 10 lines. &gt; </code></pre><p>se você quiser apenas ver as últimas tantas linhas, omita o "+":</p><pre><code>$ tail -n &lt;n&gt; &lt;filename&gt; &lt; last n lines of file. &gt; </code></pre> <p>você pode mover a pasta c:\users inteira para uma unidade diferente com bastante facilidade após a instalação do windows:</p><p><strong> aviso: isso pode causar problemas se/quando você precisar executar uma restauração do sistema </strong></p><ol> <li>inicialize na mídia de instalação e acesse o prompt de comando ( <a href="http://www.sevenforums.com/tutorials/682-command-prompt-startup.html">pressione shift + f10 na caixa de diálogo de instalação</a> )</li> <li>use robocopy para copiar c:\users para d:\users: <code>robocopy c:\users d:\users /mir /xj /copyall</code><br> uma. <code>/mir</code> diz ao robocopy para espelhar os diretórios, isso copiará todos os arquivos<br> b. <code>/xj</code> é muito importante, isto diz à robocopy para não seguir os pontos de junção. se você esquecer isso, terá muitos problemas.<br> c. <code>/copyall</code> copiará todos os atributos, incluindo informações da acl e do proprietário</li> <li>verifique se os arquivos copiados com sucesso</li> <li>excluir c:\usuários</li> <li>crie uma junção que aponte para d:\users: <code>mklink c:\users d:\users /j</code></li> </ol><p>é isso aí. eu tenho usado esse processo desde que o vista foi rtm sem problemas.</p><p>aqui está um <a href="http://caskater4.blogspot.com/2007/09/moving-your-data-where-you-want-in.html">artigo</a> que também explica. basta usar robocopy em vez de xcopy, como ele faz no artigo, para evitar possíveis problemas de permissões de ntfs.</p><p>atualização: como descobri da maneira mais difícil, pensei em mencionar também que, se você planeja mover "dados do programa" ou "arquivos de programa" com esse método, ficará desapontado ao descobrir que tudo funciona como esperado , mas as atualizações do windows não serão mais instaladas. não tenho certeza se isso foi corrigido no win 7.</p><p>atualização 2: @benjol possui um <a href="http://benjol.blogspot.com/2009/05/moving-users-folder-in-vista.html">postagem no blog</a> que detalha um método de mover a pasta profiles que recriará as junções que esse método deixa de fora. se você tiver algum problema com aplicativos herdados, dê uma olhada aqui e veja se o método dele resolve o problema.</p> <p>para encontrar os 10 maiores arquivos (linux/bash):</p><p><code>find . -type f -print0 | xargs -0 du | sort -n | tail -10 | cut -f2 | xargs -i{} du -sh {}</code></p><p>para encontrar os 10 maiores diretórios:</p><p><code>find . -type d -print0 | xargs -0 du | sort -n | tail -10 | cut -f2 | xargs -i{} du -sh {}</code></p><p>a única diferença é <code>-type {d:f}</code>.</p><p>manipula arquivos com espaços nos nomes e produz tamanhos de arquivos legíveis por humanos na saída. maior arquivo listado por último. o argumento a seguir é o número de resultados que você vê (aqui os 10 maiores).</p><p>existem duas técnicas usadas para manipular espaços em nomes de arquivos. o <code>find -print0 | xargs -0</code> usa delimitadores nulos em vez de espaços, e o segundo <code>xargs -i{}</code> usa novas linhas ao invés de espaços para finalizar itens de entrada.</p><p>exemplo:</p><pre><code>$ find . -type f -print0 | xargs -0 du | sort -n | tail -10 | cut -f2 | xargs -i{} du -sh {} 76m ./snapshots/projects/weekly.1/onthisday/onthisday.tar.gz 76m ./snapshots/projects/weekly.2/onthisday/onthisday.tar.gz 76m ./snapshots/projects/weekly.3/onthisday/onthisday.tar.gz 76m ./tmp/projects/onthisday/onthisday.tar.gz 114m ./dropbox/snapshots/weekly.tgz 114m ./dropbox/snapshots/daily.tgz 114m ./dropbox/snapshots/monthly.tgz 117m ./calibre library/robert martin/cc.mobi 159m ./.local/share/trash/files/funky chicken.mpg 346m ./downloads/the walking dead s02e02 ... (dutch subs nl).avi </code></pre> <p><code>/usr/local/bin</code> é para programas que um usuário normal pode executar.</p><ul> <li>o <code>/usr/local</code> hierarquia é para ser usada pelo administrador do sistema ao instalar o software localmente.</li> <li>ele deve ser protegido contra substituição quando o software do sistema for atualizado.</li> <li>pode ser usado para programas e dados compartilháveis ​​entre um grupo de hosts, mas não encontrados em <code>/usr</code>.</li> <li>o software instalado localmente deve ser colocado dentro de <code>/usr/local</code> em vez de/usr, a menos que esteja sendo instalado para substituir ou atualizar o software em <code>/usr</code>.</li> </ul><p>essa fonte ajuda a explicar o <a href="http://www.pathname.com/fhs/">padrão da hierarquia do sistema de arquivos</a> em um nível mais profundo.</p><p>você pode encontrar <a href="http://aplawrence.com/opinion/religion.html">este artigo sobre o uso e abuso de <code>/usr/local/bin</code></a> interessante também.</p> <p>você provavelmente deseja o <a href="http://man7.org/linux/man-pages/man1/comm.1.html">tilitário de comunicação unix</a> . <a href="http://gnuwin32.sourceforge.net/packages/coreutils.htm">versões do windows</a> estão incluídas no gnuwin32</p><blockquote> <p>nome</p> <pre><code> comm - compare two sorted files line by line </code></pre> <p>sinopse</p> <pre><code> comm [option]... file1 file2 </code></pre> <p>descrição</p> <pre><code> compare sorted files file1 and file2 line by line. with no options, produce three-column output. column one contains lines unique to file1, column two contains lines unique to file2, and column three contains lines common to both files. -1 suppress lines unique to file1 -2 suppress lines unique to file2 -3 suppress lines that appear in both files </code></pre></blockquote> <p>você pode usar find com <a href="http://en.wikipedia.org/wiki/xargs">xargs</a> para isso</p><p><code>find /thisdir -type f -name "*.ogg" -print0 | xargs -0 -imysongs mv -i mysongs /somedir</code></p><blockquote> <p>o comando -i no comando acima informa ao xargs qual string de substituição você deseja usar (caso contrário, adiciona os argumentos ao final do comando).</p> </blockquote><p>or<br> no seu comando, tente mover '{}' após o comando <code>mv</code>.</p><p><code>find /thisdir -type f -name '*.ogg' -exec mv -i {} /somedir \;</code></p> oi, vitória, tudo bem? :smiley:

veja se é alguma dessas:

<https://drive.google.com/file/d/0b90yo7plg23regnfzdvwuxn1ndg/view>
<https://drive.google.com/file/d/0b8f27iz44ivhntvznkrpqk5fzjq/view>

se não for, me fala que eu tento procurar <p>para reconstruir o cache de comandos executáveis, use <code>rehash</code> ou <code>hash -rf</code>.</p><p>verifique se você não desmarcou o <code>hash\_list\_all</code> opção (causa menos acessos ao disco, mas faz com que o cache seja atualizado com menos frequência).</p><p>se não quiser digitar um comando, você pode dizer ao zsh para não confiar no cache ao concluir, colocando a seguinte linha no seu <code>~/.zshrc</code>¹:</p><pre><code>zstyle ":completion:*:commands" rehash 1 </code></pre><p>existe um custo de desempenho, mas hoje é insignificante em uma configuração típica de área de trabalho. (não é se você tiver <code>$path</code> no nfs ou em um sistema sem memória ram.)</p><p>o comando <code>zstyle</code> está documentado na página do manual <code>zshmodule</code>. os valores dos estilos estão documentados nas páginas de manual <code>zshcompsys</code> e <code>zshcompwid</code>, ou você pode ler a fonte (aqui, das <code>\_command\_names</code> função). se você quiser alguma documentação legível ... se você encontrar alguma, me avise!</p><p>¹ <sub>requer zsh≥4.3.3, obrigado <a href="https://unix.stackexchange.com/users/1107/chris-johnsen">chris johnsen</a> </sub></p> fiz este processo recentemente, utilizei o shred, ele faz a remoção em 3 passos, sendo mais difícil de recuperar arquivos do que outros métodos.

se você for realizar o processo em um hd secundário pode utilizar sua instalação atual do linux mint, caso queira realizar o processo no hd em que o linux… <h2>pontos de restauração do sistema</h2><p>um sistema windows cria <a href="http://www.microsoft.com/windowsxp/using/helpandsupport/learnmore/systemrestore.mspx"><strong> pontos de restauração do sistema </strong></a> e a configuração padrão permite que muito espaço seja reservado para esses pontos de restauração. quando você sabe que o sistema não vai precisar de 'desinstalações' (ou seja, tudo que você instalou recentemente está funcionando bem), você pode excluir tudo, exceto o ponto de restauração mais recente.</p><p>isso pode ser feito a partir de</p><ul> <li>a opção "<strong> liberar espaço no disco rígido </strong>" em <ul> <li><strong> painel de controle </strong>, <ul> <li><strong> desempenho e manutenção </strong></li> </ul> </li> </ul> </li> </ul><p>é <a href="http://support.microsoft.com/kb/310312">bastante profundo</a> e geralmente esquecido.</p><hr><h2>lixeira de reciclagem</h2><p>a <a href="http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/win\_waste\_space\_for\_deleted\_files.mspx?mfr=true"><strong> lixeira </strong></a> geralmente assume o padrão <strong> <code>10%</code> </strong> de sua partição de disco (para cada partição).<br> para uma unidade de 100 gb, isso se torna 10 gb reservados para a lixeira.</p><ul> <li>você pode <strong> reduzir o padrão </strong> para um valor inferior mais útil para sua configuração</li> <li>você também pode escolher <strong> configurar o armazenamento de reciclagem individualmente para cada partição </strong></li> </ul><p>eu também uso este atalho para limpar a lixeira de vez em quando,</p><pre><code>%windir%\system32\cleanmgr.exe /d </code></pre><hr><h2>desinstalar pastas</h2><p> <a href="http://news.cnet.com/8301-13880\_3-9862223-68.html"><strong> excluindo pastas de desinstalação </strong></a> .<br> já mencionado em outra resposta aqui.<br> existe um <a href="http://www.astahost.com/info.php/remove-windows-update-uninstall-information\_t19170.html">referência de script aqui</a> .</p><blockquote> <p>testado em windows xp, requer wscript e vbscript (que seria com a maioria dos sistemas operacionais windows)</p> </blockquote><hr><h2>revouninstaller</h2><p> <a href="http://www.revouninstaller.com/"><strong> revouninstaller </strong></a> é um bom freeware para limpar arquivos perdidos deixados por desinstalações de aplicativos. ele faz uma varredura bem organizada em busca de arquivos remanescentes de uma desinstalação tosca.<br> também gosto de <strong> ccleaner </strong> mencionado em outra resposta aqui.</p>