Execute chkdsk /f
no Windows. Ele deve remover arquivos com caracteres inválidos ou corrigir seus nomes de arquivos para que possam ser removidos manualmente.
Eu backup alguns dos meus arquivos do Linux em um disco rígido removível NTFS há vários dias, desta vez eu preciso remover esses arquivos. Mas eu acho difícil desde:
No Windows, ele reclama que " não foi possível encontrar este item "
Em uma máquina virtual cujo sistema operacional é o Ubuntu 12.04, quando eu montei o disco rígido (acho que ele está usando "ntfs-3g") e use " rm
", ele reclama " Nenhum arquivo ou diretório "; Mesmo " ls
" falha no arquivo.
Então, há alguma maneira de destruir esse arquivo corretamente?
Execute chkdsk /f
no Windows. Ele deve remover arquivos com caracteres inválidos ou corrigir seus nomes de arquivos para que possam ser removidos manualmente.
O NTFS suporta "fluxos", como os "forks" do HFS + e diferente de qualquer coisa nos sistemas de arquivos habituais do unix.
A convenção no Windows é nomear os streams como parte do nome do arquivo, separando o nome do arquivo do nome do fluxo com :
, e é por isso que você estava obtendo "não foi possível encontrar este item" - para nome "aqui : tente isso ", o Windows estava à procura de fluxo" tente isso "no arquivo" aqui ". Eu entendo que você pode dizer ao Windows para não analisar nomes de arquivos como este, mas eu não sei como.
O ntfs-3g possui uma opção de montagem para ativar a análise compatível de nome de fluxo, montar o fs com -o streams_interface=windows
e o ntfs-3g tratará :
da mesma maneira em nomes de arquivos. Então, para verificar isso, mount|grep windows
deve funcionar bem o suficiente.
Se você já tentou executar o chkdsk do Windows em um sistema de arquivos ntfs-3g contendo dois-pontos mas que foi montado e usado no Linux sem a opção windows_names
ou streams_interface=windows
, a única maneira de restaurar a integridade do sistema de arquivos NTFS é para inicializar um sistema operacional Windows e permitir que o Windows chkdsk
exclua permanentemente todos os arquivos que contenham dois pontos.
Dito de outro modo: seja muito, muito cuidadoso executando o Windows chkdsk
em um sistema de arquivos NTFS que foi escrito para usar o ntfs-3g no Linux. Você perderá todos os arquivos que contiverem dois pontos.
Existem duas conseqüências do uso do ntfs-3g que interagem para causar isso:
Tuxera adere à letra da especificação NTFS, que permite dois pontos em nomes de arquivos. No entanto, praticamente não há ninguém usando sistemas de arquivos que sejam exclusivamente NTFS não compatíveis com o Windows e nunca tenham sido usados com o Windows, portanto, quase todos realmente precisam do comportamento não padrão.
A maneira segura do Tuxera para reparar um sistema de arquivos NTFS corrompido é inicializar um sistema operacional Windows e executar chkdsk
. (Isso também acontecerá automaticamente se você inicializar um sistema operacional Windows e o sistema de arquivos for detectado como precisando de reparo.)
Portanto, se você estiver interessado em estabilidade e segurança a longo prazo do seu sistema de arquivos, você precisará inicializar um sistema operacional Windows e executar chkdsk
para repará-lo. Mas quando o Windows chkdsk
for executado, ele excluirá todos os arquivos com dois-pontos em seus nomes de arquivos sem nenhum prompt ou aviso.
Infelizmente, muitas pessoas usam o NTFS como um sistema de arquivos universal para portabilidade e backups. Dois arquivos comuns contendo nomes de arquivos no Linux são os e-mails nomeados após sua linha de assunto (Re :, Fwd :, etc.) e os e-mails armazenados usando o formato Maildir. Portanto, se você estiver criando um sistema de arquivos ntfs-3g do zero para essa finalidade, certifique-se de sempre montá-lo usando a opção windows_names
mount e em /etc/fstab
. Quando você tiver que executar chkdsk
, todos os arquivos criados no sistema de arquivos devem ser válidos.
Se você não fizer isso, talvez não seja possível remover ou salvar a maioria ou todos os seus arquivos inválidos do Windows (aqueles que contenham dois pontos, etc.). Depois de criar arquivos inválidos, o Windows considerará o sistema de arquivos corrompido até que esses arquivos sejam eliminados - e somente o Windows poderá reparar o sistema de arquivos. Portanto, reparar ou excluir os arquivos do Linux será impossível.
tente rm ./:
ou rm ./":"
ou rm ./\:
nesta ordem:)
Não entendo por que isso está causando seus problemas. Os testes a seguir foram executados em um sistema de arquivos NTFS:
$ mount| grep win
/dev/sda3 on /winblows type fuseblk (rw,nosuid,nodev,relatime,user_id=0,group_id=0,allow_other,blksize=4096)
$ grep winb /etc/fstab
UUID=C0BCD19CBCD18D72 /winblows ntfs defaults 0 0
$ pwd
/winblows/foo
Então, estou em uma partição NTFS e executo:
$ touch :a a: a:b
$ ls
:a a: a:b
$ rm :a a: a:b
Todos esses comandos funcionam, de qualquer forma, possíveis soluções alternativas são:
rm \:a
rm -- :a
rm ':a'
rm *:*
find . -name "*:*" -delete
Tente arquivar com o winrar - selecione "excluir arquivos após o arquivamento" nas opções de arquivamento. Isso deve mover seus arquivos para o arquivo rar e excluir os arquivos originais. Em seguida, exclua o arquivo rar.
Tags ntfs filesystems filenames