Je suis au collège et je dois soumettre mes devoirs cs à partir d'une machine Linux scolaire, mais j'aime faire les devoirs sur mon ordinateur portable (Mac). Donc, au lieu de copier mes fichiers à chaque fois, puis de les soumettre, j'ai décidé de faire un script pour le faire pour moi en utilisant scp
et ssh
. Lorsque j'ai testé mon script la première fois, la scp
commande a créé le répertoire hw3
sur l'autre machine. La prochaine fois que je l'ai testé, il a créé le répertoire hw4
. Les deux répertoires contenaient mes fichiers de programme. Étant donné que les deux répertoires ont été créés uniquement pour les tests, je les ai tous les deux supprimés à l'aide de rm -r
. Mais c'est là que le problème se pose.
Grâce à des tests ultérieurs de mon script et à d'autres débogages, j'ai constaté que je ne pouvais plus créer de fichier ou de dossier nommé hw3 ou hw4 sur l'autre machine lorsque j'étais connecté via ssh
. Je peux créer un dossier nommé autre chose, tout simplement pas hw3
ou hw4
. Je ne peux pas les faire via mkdir
, mv
, cp
ou toucher, me faisant penser il y a quelque chose de mal avec le système de fichiers. Cependant, je peux créer des fichiers hw3
et hw4
dans le répertoire parent. Personne à qui j'ai parlé ne sait ce que c'est et ne l'a jamais vu auparavant, et googler le problème n'a donné aucun résultat.
Dans mon école, il existe de nombreuses machines différentes sur lesquelles je peux me connecter et j'en ai essayé plusieurs, mais le problème persiste sur toutes, ce qui est logique puisque je travaille à partir d'un lecteur réseau (SDRIVE dans le chemin). Pour que le script fonctionne, j'ai utilisé la solution de contournement en le créant simplement à la hww#
place de hw#
, mais j'aimerais toujours vraiment savoir ce qui se passe et comment le corriger.
Il s'agit de la sortie de mon terminal lorsque je me connecte via ssh
et de mes commandes.
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: Comme demandé, l'exécution de "stat -f ~ / SDRIVE" génère les informations suivantes:
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 - CONTOURNEMENT: J'ai fait quelques recherches, et j'ai trouvé que notre école utilise dfshack (vous pouvez le google sur github) pour lier Windows et les systèmes de fichiers unix / linux, et a été créé par un étudiant ici, donc naturellement, il a des bugs. Apparemment, j'en ai trouvé un. J'ai également fait quelques tests supplémentaires et j'ai constaté que le processus suivant fonctionnait pour me permettre de recréer les répertoires. J'ai un Mac, donc je ne sais pas si cela fonctionnerait pour Windows.
- Mappez le lecteur réseau à Mac OS pour pouvoir y accéder via le Finder
- Créez via Finder le répertoire qui n'a pas pu être créé auparavant.
- Connectez-vous à la machine distante via ssh et accédez au répertoire dans lequel vous ne pouvez pas créer les dossiers ou les fichiers.
- Type
mv dirCreatedViaFinder newName
- Vous pouvez maintenant créer des répertoires et des fichiers nommés tout ce qui ne pouvait pas être créé auparavant, mais il y a un inconvénient. Si vous
rm -r newName
, vous ne pouvez plus créer denewName
fichiers et de dossiers. Je pense donc que tout le problème est causé par la suppression des répertoires.