Eu estou na faculdade e tenho que enviar minha lição de casa cs de uma máquina Linux da escola, mas eu gosto de fazer a lição de casa no meu laptop (Mac). Então, em vez de copiar meus arquivos todas as vezes, depois de enviá-los, decidi fazer um script para fazer isso usando scp
e ssh
. Quando testei meu script pela primeira vez, o comando scp
criou o diretório hw3
na outra máquina. A próxima vez que eu testei, ele criou o diretório hw4
. Ambos os diretórios tinham meus arquivos de programa neles. Como os dois diretórios foram criados apenas para teste, excluí os dois usando rm -r
. Mas aqui é onde o problema surge.
Por meio do teste posterior do meu script e outras depurações, descobri que agora não posso criar nenhum arquivo ou pasta chamado hw3 ou hw4 na outra máquina enquanto estiver conectado a ele por meio de ssh
. Eu posso criar uma pasta com o nome de qualquer outra coisa, mas não hw3
ou hw4
. Eu não posso fazê-los via mkdir
, mv
, cp
ou toque, fazendo-me pensar que há algo errado com o sistema de arquivos. No entanto, posso criar hw3
e hw4
arquivos no diretório pai. Ninguém com quem conversei sabe o que é isso e nunca viu antes, e pesquisar no Google sobre o problema não gerou resultados.
Na minha escola existem muitas máquinas diferentes nas quais eu posso fazer logon e eu tentei várias, mas o problema persiste em todas elas, o que faz sentido, já que estou trabalhando em uma unidade de rede (SDRIVE no caminho). Para fazer o script funcionar, usei a solução alternativa apenas para criar hww#
em vez de hw#
, mas eu ainda gostaria de saber o que está acontecendo e como corrigi-lo.
Este é o meu terminal de saída quando eu faço logon via ssh
e meus comandos.
Last login: Tue Mar 3 11:40:18 2015 from r03ane3md.device.mst.edu
You are currenly one of 7 users on this host!
ane3md@rc07xcs213:~$ cd SDRIVE/cs1510
ane3md@rc07xcs213:~/SDRIVE/cs1510$ ls -l
total 0
drwxr-xr-x 2 ane3md mst_users 0 Mar 3 12:01 hw1
drwxr-xr-x 2 ane3md mst_users 0 Feb 21 21:37 hw2
drwxr-xr-x 2 ane3md mst_users 0 Mar 3 11:59 hww3
ane3md@rc07xcs213:~/SDRIVE/cs1510$ mkdir hw3
mkdir: cannot create directory ‘hw3’: Function not implemented
ane3md@rc07xcs213:~/SDRIVE/cs1510$ touch hw3
touch: cannot touch ‘hw3’: Function not implemented
ane3md@rc07xcs213:~/SDRIVE/cs1510$ mv hww3 hw3
mv: failed to access ‘hw3’: Function not implemented
ane3md@rc07xcs213:~/SDRIVE/cs1510$
EDIT: Conforme solicitado, executando "stat -f ~ / SDRIVE" gera o seguinte:
ane3md@rc07xcs213:~$ stat -f ~/SDRIVE
File: "/usr/local/home/ane3md/SDRIVE"
ID: 0 Namelen: 4096 Type: fuseblk
Block size: 4096 Fundamental block size: 4096
Blocks: Total: 0 Free: 0 Available: 0
Inodes: Total: 314572031 Free: 66717154
EDIT - WORKAROUND: Eu fiz um pouco de bisbilhotice, e descobri que nossa escola usa o dfshack (você pode fazer o google no github) para linkar sistemas de arquivos Windows e unix / linux, e foi feito por um aluno aqui, então naturalmente insetos. Aparentemente, encontrei um deles. Também fiz mais alguns testes e descobri que o processo a seguir funciona para permitir que eu crie os diretórios novamente. Eu tenho um Mac, então não tenho certeza se isso funcionaria para o Windows.
- Mapeie a unidade de rede para o Mac OS para que você possa acessá-la pelo Finder
- Crie pelo Finder o diretório que não pôde ser criado antes.
- Conecte-se à máquina remota via ssh e navegue até o diretório em que você não conseguiu criar as pastas ou arquivos.
- Digite
mv dirCreatedViaFinder newName
- Agora você pode criar diretórios e arquivos com nomes que não puderam ser criados antes, mas há uma desvantagem. Se você for
rm -r newName
, não poderá criar newName
arquivos e pastas. Então, acho que todo o problema é causado pela remoção de diretórios.