por que o sftp rmdir não está funcionando?

18

Estou tentando remover um diretório com muitos arquivos e pastas do meu espaço de servidor privado. Estou fazendo logon via SFTP; Eu posso acessar o diretório inteiro sem problemas; Eu posso até excluir arquivos individuais com rm. Mas isso me levaria uma eternidade - então eu realmente gostaria de fazer o rmdir na pasta mais alta que quero remover. Mas quando faço isso, recebo

Não foi possível remover o diretório: Falha

Alguma idéia do que eu poderia estar fazendo de errado?

Muito obrigado, Sam

user1451632
fonte
Se você pode fazer o SFTP nesse servidor, pode fazer o SSH? Se assim for, você pode usar uma versão mais poderosa do comando RM: rm -rf foo / *
Chris

Respostas:

21

Na minha experiência, o rmdir prefere trabalhar em um diretório vazio. Se você está tentando excluir o diretório foo, eu faria:

$rm foo/*
$rmdir foo
Chris
fonte
2
Editado porque o sinalizador -rf não existe para rm no sftp.
21413 Chris
1
Fazer o SSH para fazer rm -rf foi a resposta óbvia. Eu tentei rm -rf no SFTP, mas ele não podia aceitar -rf, como você apontou. (O truque do curinga no SFTP também não funcionou.) De qualquer forma, muito obrigado pela sua ajuda!
User1451632
Isso é engraçado. rm foo / * trabalhou para mim no SFTP. De qualquer forma, estou feliz que você tenha resolvido!
21413 Chris
Ainda assim, ele não remove os diretórios recursivamente. É bom o bastante, mas não é perfeito ainda :-)
Krzysztof Jabłoński
Tinha o mesmo problema e rm foo/*não estava funcionando porque foo/continha diretórios não vazios. Felizmente, também rsyncfoi permitido e criei um diretório vazio localmente e, em seguida, usei rsync -rv --delete empty_local_dir/ host.example.org:/foo/para remover tudo abaixo do foo/diretório remoto . Depois foi possível rmdir foovia SFTP.
precisa saber é o seguinte
5

Você não especificou qual cliente SFTP está usando. Então, eu estou assumindo o OpenSSH SFTP ( sftp).

O comando rmdirno cliente SFTP do OpenSSH é mapeado diretamente para a SSH_FXP_RMDIRsolicitação do protocolo SFTP. A especificação SFTP para a versão 3 (a usada pelo OpenSSH) menciona especificamente que a SSH_FXP_RMDIRoperação pode falhar "se o diretório especificado não estiver vazio" (embora isso não pareça exigido).

Se o diretório não tiver subdiretórios, você poderá usar rm foo/*(ou seja, comando OpenSSH SFTP, não comando shell) para remover todos os arquivos no diretório primeiro. E então use rmdir.

Martin Prikryl
fonte
1
Uma pergunta clássica é: Como você faz rm -r *com o SFTP. Eu não acho possível.
Jari Turkia
2
@JariTurkia Não é possível com sftp(cliente de linha de comando OpenSSH). É possível com SFTP (protocolo), se você tiver um cliente suficientemente inteligente.
Martin Prikryl 23/09
Eu gostaria de receber sugestões para um cliente SFTP suficientemente inteligente. Há uma caixa específica, que eu preciso mexer regularmente e que é restrita ao SFTP por razões de segurança. Obviamente, ao fazer qualquer coisa, fica muito doloroso, dado o conjunto limitado de comandos que o cliente SFTP do OpenSSH oferece.
Jari Turkia
Faça uma pergunta sobre o seu problema específico ( "Como excluir recursivamente a pasta usando o SFTP" ) - Certifique-se de especificar sua plataforma.
Martin Prikryl