Estou na faculdade e tenho que enviar minha lição de casa cs de uma máquina Linux escolar, mas gosto de fazer a lição de casa no meu laptop (Mac). Então, em vez de copiar meus arquivos todas as vezes e enviá-los, decidi criar um script para fazer isso por mim usando scp
e ssh
. Quando testei meu script pela primeira vez, o scp
comando criou o diretório hw3
na outra máquina. A próxima vez que o testei, ele criou o diretório hw4
. Ambos os diretórios tinham meus arquivos de programa. Como os dois diretórios foram criados apenas para teste, eu os excluí usando rm -r
. Mas aqui é onde o problema surge.
Através de testes posteriores do meu script e de outras depurações, descobri que agora não consigo criar nenhum arquivo ou pasta chamado hw3 ou hw4 na outra máquina enquanto conectado a ele via ssh
. Eu posso criar uma pasta chamada qualquer outra coisa, apenas não hw3
ou hw4
. Eu não posso fazê-los via mkdir
, mv
, cp
ou toque, fazendo-me pensar que há algo de errado com o sistema de arquivos. No entanto, eu posso criar hw3
e hw4
arquivos no diretório pai. Ninguém com quem conversei sabe o que é isso e nunca o viu antes, e a pesquisa no Google não resultou em nenhum resultado.
Na minha escola, existem muitas máquinas diferentes nas quais posso fazer login e tentei várias, mas o problema persiste em todas elas, o que faz sentido, pois estou trabalhando em uma unidade de rede (SDRIVE no caminho). Para que o script funcione, usei a solução alternativa de fazê-lo criar em hww#
vez de hw#
, mas ainda gostaria de saber o que está acontecendo e como corrigi-lo.
Esta é a minha saída do terminal a partir de quando eu 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 - SOLUÇÃO: Fiz algumas investigações e descobri que nossa escola usa o dfshack (você pode pesquisá-lo no github) para vincular o Windows e os sistemas de arquivos unix / linux, e foi feito por um aluno aqui, portanto, naturalmente, tem bugs. Aparentemente eu encontrei um deles. Também fiz mais testes e descobri que o processo a seguir funciona para permitir a criação dos 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 através do Finder
- Crie via 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 pode criar as pastas ou arquivos.
- Tipo
mv dirCreatedViaFinder newName
- Agora você pode criar diretórios e arquivos com o nome de qualquer coisa que não pudesse ser criada antes, mas há uma desvantagem. Se você
rm -r newName
, agora você não pode criarnewName
arquivos e pastas. Então, acho que todo o problema é causado pela remoção de diretórios.