como é que a opção “mover para o lixo” ou apagar a opção copiar arquivos para a pasta do lixo normalmente?

0

Aqui está o que eu tentei:

  • Se um arquivo for excluído, ele será copiado para a pasta Lixeira / arquivos e, em seguida, será excluído e suas informações serão armazenadas na Lixeira / informações no Nautilus.
  • Então, pensei que, se eu tornar o arquivo não legível, talvez ele não apareça na lixeira, pois não pode ser copiado. Mas quando eu tentei, ainda acabou no lixo.
  • Então eu concluí que ele move diretamente o arquivo para o diretório do lixo.

Agora aqui está a minha pergunta,

Estou tentando imitar esse comportamento por meio da programação em python. Mas o que eu quero fazer é primeiro fazer algumas verificações e depois copiar o arquivo para o lixo antes de executar o comando rm.

Eu estou tomando a cadeia de comando rm do usuário e, em seguida, fazendo algumas verificações e copiando o arquivo para a lixeira e, em seguida, executando o comando rm. Eu não quero mover diretamente o arquivo para o lixo. Mas se eu apenas copiar o arquivo, ele me dá a permissão de erro negado por causa da permissão de leitura. Como resolver isso? Qualquer trabalho por aí?

    
por Natesh bhat 14.05.2018 / 13:15

2 respostas

0

Eu não estou familiarizado com o Python. Estou usando comandos Unix padrão para ilustrar meus pensamentos. Traduza para o Python sozinho.

Dentro de um único sistema de arquivos que é sensato o suficiente, mv deve ser atômico . Se você optar por mover arquivos em duas etapas, ou seja, cp + rm , será necessário certificar-se de que cp foi bem-sucedido antes de você rm . Com atomic mv não há risco de acabar com o arquivo totalmente desvinculado ou "metade aqui, metade lá".

Mudar de um sistema de arquivos para outro com mv é como cp + rm ; mv espera que a tarefa de cópia seja bem-sucedida antes de desvincular o arquivo original, ainda assim algumas coisas podem dar errado.

Como AFH comentou:

To copy a file you need to be able to read it, but to move it you need write access to the source and target directories, without any necessity to read the file being moved.

Verdadeiro. Há, no entanto, uma maneira de "copiar" um arquivo dentro de um único sistema de arquivos sem lê-lo: crie um link físico. Certifique-se de entender a diferença .

Se você ainda insistir em fazer isso em duas etapas, em vez de cp + rm try ln + rm primeiro. Claro que você precisa garantir ln trabalhado antes de você rm . Uma tentativa de criar um link entre dispositivos falhará. Nesse caso, você deve voltar para cp + rm (e acho que não há como fazê-lo sem ler o arquivo).

    
por 14.05.2018 / 14:26
0

É "apenas" uma renomeação, conforme apontado no comentário.

No entanto, há mais do que apenas mover o arquivo envolvido para colocá-lo na Lixeira. Você também precisa copiar os metadados para o local apropriado no formato apropriado; caso contrário, a restauração do arquivo não funcionará corretamente. Consulte a especificação de lixo FD.O / XDG para obter mais informações sobre o que está acontecendo. Note que praticamente tudo usa o suporte opcional para colocar um diretório de lixeira na raiz da mídia removível, precisamente para evitar os problemas de tentar lixeirar arquivos aos quais você não tem acesso de leitura, mas que podem se mover nesse sistema de arquivos. >     

por 14.05.2018 / 21:41