copier renommer, sauvegarder sur linux3, archiver
Il faut tester toutes ces manipulations pour apprendre les finesses du métier ! (bien lire et tester, car y a même des trucs !)
C’est en forgeant qu’on devient forgeron!
🕒 : 3 h maximum
Prérequis:
- Cours découverte de Linux au lycée
- Le terminal , la ligne de commande.
- Cours Codage
- bash shell
- kernel
- avoir le compte sur linux3 votre login et mot de passe.
But:
- gestion des fichiers sous linux
- manipulation sur les fichiers et répertoires
- sauvegarder sur linux3 votre travail pour être évalué.
- envoyer un tp , compte rendu et archive
Répertoire du travail:
~/Works/TP1_LINUX
Travail à renvoyer :
📩 Faire une rédaction avec libre office (format odt) qui reste votre propriété , mais envoyer avant la fin de la séance votre rédaction , comme un devoir , au format PDF , attention si pas PDF , ça ne vaudra rien !
Donc si vous avez bien compris cette fois ci il faut créer un répertoire de tp , ~/Works/TP1_LINUX (ça se fera désormais automatiquement par la suite )
1- Dans ce répertoire
créer un autre répertoire du nom de « directory_0 »
qui lui même contiendra « directrory_1 » qui lui même contiendra « directory_2 » , ainsi de suite jusqu’à « directory_9 »
la première méthode est de grimper dans l’arbre et réaliser chaque répertoire (ce que je vous propose de faire !)
1-1 tree
sudo apt update && sudo apt install tree
vérifier avec cette commande que tout c’est bien passé!
etudiant@ordi:~/Works/TP1_LINUX$ tree
.
└── directory_0
└── directory_1
└── directory_2
└── directory_3
└── directory_4
└── directory_5
└── directory_6
└── directory_7
└── directory_8
└── directory_9
10 directories, 0 files
1-2 Ecrire un fichier bonjour.txt contenant bonjour le monde dans directory_9
etudiant@ordi:~/Works/TP1_LINUX$ echo "Bonjour le monde" > directory_0/directory_1/directory_2/directory_3/directory_4/directory_5/directory_6/directory_7/directory_8/directory_9/bonjour.txt
etudiant@ordi:~/Works/TP1_LINUX$ tree
.
└── directory_0
└── directory_1
└── directory_2
└── directory_3
└── directory_4
└── directory_5
└── directory_6
└── directory_7
└── directory_8
└── directory_9
└── bonjour.txt
10 directories, 1 file
pour saisir les différents directory_X , il suffit d’utiliser la complétion sous linux c’est super intéressant , ça évite des fautes de frappes et permet de gagner du temps
exemple , saisir comme ci dessous et appuyer sur tab (la touche tabulation a coté du A a gauche !)
etudiant@ordi:~/Works/TP1_LINUX$ echo "Bonjour le monde" > directory_0/#tab
# ne pas oublier de mettre le nom du fichier (bonjour.txt)
etudiant@ordi:~/Works/TP1_LINUX$ echo "Bonjour le monde" > directory_0/directory_1/directory_2/directory_3/directory_4/directory_5/directory_6/directory_7/directory_8/directory_9/bonjour.txt
La complétion est un outil génial , qui selon le contexte va vous proposer des solutions possibles .. il ne faut pas hésiter à l’utiliser! on retrouve un peu ça désormais sous WINDOWS
1-3 Vérifier le contenu de votre fichier avec cat
etudiant@ordi:~/Works/TP1_LINUX$ cat directory_0/directory_1/directory_2/directory_3/directory_4/directory_5/directory_6/directory_7/directory_8/directory_9/bonjour.txt
Bonjour le monde
etudiant@ordi:~/Works/TP1_LINUX$
1-4 on va effacer les répertoires directory
instinctivement on pense a rmdir
etudiant@ordi:~/Works/TP1_LINUX$ rmdir directory_0/
rmdir: impossible de supprimer 'directory_0/': Le dossier n'est pas vide
etudiant@ordi:~/Works/TP1_LINUX$ rmdir directory_0/directory_1/directory_2/directory_3/directory_4/directory_5/directory_6/directory_7/directory_8/directory_9/
rmdir: impossible de supprimer 'directory_0/directory_1/directory_2/directory_3/directory_4/directory_5/directory_6/directory_7/directory_8/directory_9/': Le dossier n'est pas vide
etudiant@ordi:~/Works/TP1_LINUX$
le problème avec rmdir , c’est que le répertoire doit être vide pour pouvoir faire son travail , comme ci-dessous
etudiant@ordi:~/Works/TP1_LINUX$ mkdir test
etudiant@ordi:~/Works/TP1_LINUX$ ls test -ld #liste et d pour directory
drwxrwxr-x 2 etudiant etudiant 4096 juil. 7 12:37 test
etudiant@ordi:~/Works/TP1_LINUX$ rmdir test/
etudiant@ordi:~/Works/TP1_LINUX$ ls test -ld
ls: impossible d'accéder à 'test': Aucun fichier ou dossier de ce nom
etudiant@ordi:~/Works/TP1_LINUX$
1-5 effacer les directory_X
la solution ici c’est d’utiliser rm avec l’option -r (recurse) l’option -f pour forcer sans poser de question , ca peut parfois etre bien pratique!
rm pour remove , fonctionne pour les fichiers , et les répertoires si -r (récursif)
2- Pour créer des répertoires
autre façon de faire!
en lisant le man de mkdir ou l’option -p (parent)
etudiant@ordi:~/Works/TP1_LINUX$ mkdir -p directory_0/directory_1/directory_2/directory_3/directory_4/directory_5/directory_6/directory_7/directory_8/directory_9
-p « no error if existing, make parent directories as needed »
-p « ne génère pas d’erreur si le répertoire existe déjà, crée les répertoires parents si nécessaire »
3- Synthèse de cette première partie!
A Retenir: (dans le compte rendu montrer un exemple d’utilisation de chaque exemple)
mkdir pour réaliser un répertoire, rmdir pour effacer un répertoire vide.
mkdir -p , pour réaliser plusieurs répertoires en même temps .
rm pour effacer un fichier
rm -r pour effacer un répertoire et la suite de ce répertoire ! Attention c’est dangereux et irréversible !
rm -rf encore plus dangereux , ne pose aucune question , un peu buldozaire!
4- Création de fichiers
Déjà vu dans le tp précédent
nous sommes toujours dans /home/etudiant/Works/TP1_LINUX ok !!
Dans ce répertoire de tp créer un répertoire « myfiles »
dans myfiles , créer un fichier bonjour.txt « contenant bonjour le monde ! »
etudiant@ordi:~/Works$ cd TP1_LINUX/
etudiant@ordi:~/Works/TP1_LINUX$ ls
etudiant@ordi:~/Works/TP1_LINUX$ mkdir myfiles
etudiant@ordi:~/Works/TP1_LINUX$ ls -l
total 4
drwxrwxr-x 2 etudiant etudiant 4096 sept. 15 11:20 myfiles
etudiant@ordi:~/Works/TP1_LINUX$ cd myfiles/
etudiant@ordi:~/Works/TP1_LINUX/myfiles$ echo "Bonjour le monde !" > bonjour.txt
etudiant@ordi:~/Works/TP1_LINUX/myfiles$ ls -l
total 4
-rw-rw-r-- 1 etudiant etudiant 19 sept. 15 11:21 bonjour.txt
etudiant@ordi:~/Works/TP1_LINUX/myfiles$
4-1 mv move , déplacer
e fichier bonjour.txt n’est pas au bonne endroit!
etudiant@ordi:~/Works/TP1_LINUX$ tree
.
├── bonjour.txt
├── directory_0
│ └── directory_1
│ └── directory_2
│ └── directory_3
│ └── directory_4
│ └── directory_5
│ └── directory_6
│ └── directory_7
│ └── directory_8
│ └── directory_9
│ └── bonjour.txt
└── myfiles
11 directories, 2 files
etudiant@ordi:~/Works/TP1_LINUX$
il faut corriger cela ! pour déplacer un fichier on va utiliser move , mv contraction de move.
etudiant@ordi:~/Works/TP1_LINUX$ mv bonjour.txt myfiles/
etudiant@ordi:~/Works/TP1_LINUX$ tree
.
├── directory_0
│ └── directory_1
│ └── directory_2
│ └── directory_3
│ └── directory_4
│ └── directory_5
│ └── directory_6
│ └── directory_7
│ └── directory_8
│ └── directory_9
│ └── bonjour.txt
└── myfiles
└── bonjour.txt
11 directories, 2 files
etudiant@ordi:~/Works/TP1_LINUX$
vérifions le contenu de notre fichier !
etudiant@ordi:~/Works/TP1_LINUX$ cat myfiles/bonjour.txt #avec cat
Bonjour le monde !
etudiant@ordi:~/Works/TP1_LINUX$ hexdump -C myfiles/bonjour.txt #avec hexdump
00000000 42 6f 6e 6a 6f 75 72 20 6c 65 20 6d 6f 6e 64 65 |Bonjour le monde|
00000010 20 21 0a | !.|
00000013
4-2 Fichier/Répertoire visible et invisible
Déplaçons nous dans le répertoire myfiles
etudiant@ordi:~/Works/TP1_LINUX$ cd myfiles/
etudiant@ordi:~/Works/TP1_LINUX/myfiles$ ls -la
total 12
drwxrwxr-x 2 etudiant etudiant 4096 juil. 7 15:27 .
drwxrwxr-x 4 etudiant etudiant 4096 juil. 7 15:27 ..
-rw-rw-r-- 1 etudiant etudiant 19 juil. 7 15:23 bonjour.txt
etudiant@ordi:~/Works/TP1_LINUX/myfiles$
ls -la #-l pour la liste détaillée du fichier/répertoire -a –all , permet de voir tous les fichiers et répertoires
on découvre ici 2 répertoires qu’on avait encore pas vu ! et pourtant ils sont la dés que l’on crée un répertoire
. (point) on va l’appeler répertoire courant (current directory) le répertoire dans lequel on est!
.. (point point) le répertoire parent le répertoire d’où on vient .
c’est pourquoi si on tape la commande cd . on reste dans le répertoire courant , et si on tape la commande cd .. on retourne au répertoire parent !
☠ Attention cd est la commande , et . et .. sont des répertoires , il faut un délimiteur , ici l’espace entre la commande et le répertoire!
etudiant@ordi:~/Works/TP1_LINUX/myfiles$ cd . #je reste ici
etudiant@ordi:~/Works/TP1_LINUX/myfiles$ pwd
/home/etudiant/Works/TP1_LINUX/myfiles
etudiant@ordi:~/Works/TP1_LINUX/myfiles$ cd .. #je vais dans le répertoire parent!
etudiant@ordi:~/Works/TP1_LINUX$ pwd
/home/etudiant/Works/TP1_LINUX
etudiant@ordi:~/Works/TP1_LINUX$
C’est ainsi qu’on peut se déplacer dans arborescence .
4-3 Copier cp (copy)
Nous sommes actuellement dans TP1_LINUX , je dois copier mon fichier bonjour.txt en bonjour1.txt dans le répertoire myfiles!
etudiant@ordi:~/Works/TP1_LINUX$ cp myfiles/bonjour.txt myfiles/bonjour1.txt
etudiant@ordi:~/Works/TP1_LINUX$ tree
.
├── directory_0
│ └── directory_1
│ └── directory_2
│ └── directory_3
│ └── directory_4
│ └── directory_5
│ └── directory_6
│ └── directory_7
│ └── directory_8
│ └── directory_9
│ └── bonjour.txt
└── myfiles
├── bonjour1.txt
└── bonjour.txt
11 directories, 3 files
etudiant@ordi:~/Works/TP1_LINUX
Vérifier que ces 2 fichiers sont bien identiques à l’aide de cat et hexdump
etudiant@ordi:~/Works/TP1_LINUX$ diff myfiles/bonjour.txt myfiles/bonjour1.txt #pas de difference
etudiant@ordi:~/Works/TP1_LINUX$ echo "Bonjour monde !" > myfiles/bonjour2.txt
etudiant@ordi:~/Works/TP1_LINUX$ diff myfiles/bonjour.txt myfiles/bonjour2.txt #plus le meme!
1c1
< Bonjour le monde !
---
> Bonjour monde !
etudiant@ordi:~/Works/TP1_LINUX$
4-4 mv pour renommer
etudiant@ordi:~/Works/TP1_LINUX/myfiles$ mv bonjour2.txt fichier.txt
etudiant@ordi:~/Works/TP1_LINUX/myfiles$ ls -l
total 12
-rw-rw-r-- 1 etudiant etudiant 19 juil. 7 15:52 bonjour1.txt
-rw-rw-r-- 1 etudiant etudiant 19 juil. 7 15:23 bonjour.txt
-rw-rw-r-- 1 etudiant etudiant 16 juil. 7 15:54 fichier.txt
Vérifier bien qu’on a seulement renommer bonjour2.txt en fichier.txt
5- Validation
refaire les répertoires et fichiers !
copier le fichier bonjour.txt de directory_9 en hello.txt dans myfile.
5-1 fichiers et répertoires invisible pour le moldu !
echo "mon fichier abracadabra!" > /home/etudiant/Works/TP1_LINUX/myfiles/.abracadabra
aller dans le répertoire myfiles , et trouver votre fichier (indice ls -a)
y faire un répertoire « .magie »
comment ça se passe ?
les fichiers/répertoire dit cachés ne sont pas d’un usage courant .. et un utilisateur n’est pas obligé de les voire en permanence ..
ls ~ -la
en déduire ! vous êtes un moldu ? au passage regarder le fichier .bash_history ! magie !
6- ssh
🔐 SSH (Secure Shell)
on va pouvoir aller sur linux3 , oui linux est multi-utilisateur ! on peut tous y être en même temps !
SSH est un protocole de communication sécurisé qui permet de se connecter à un ordinateur distant via un réseau, généralement pour le contrôler à distance en ligne de commande.
📌 En détail :
- Nom complet : Secure Shell
- Port par défaut :
22 - Chiffrement : Oui (toutes les données échangées sont cryptées)
- Utilisation typique :
- Administrer un serveur distant (Linux, par exemple)
- Transférer des fichiers (via
scpousftp) - Exécuter des commandes à distance
6-1 tester la mise en fonction de linux3 (linux3 acccessible ?)
nous allons découvrir la commande ping , qui envoie des messages à une machine du réseau. Ici on va s’intéresser au réseau local .
Pour arrêter le ping le signal contrôle C (appuyer sur contrôle C)
etudiant@ordi:~$ ping linux3.local
PING linux3.local (192.168.1.56) 56(84) bytes of data.
64 bytes from 172.22.0.3 (192.168.1.56): icmp_seq=1 ttl=64 time=0.811 ms
64 bytes from 172.22.0.3 (192.168.1.56): icmp_seq=2 ttl=64 time=0.983 ms
64 bytes from 172.22.0.3 (192.168.1.56): icmp_seq=3 ttl=64 time=0.557 ms
64 bytes from 172.22.0.3 (192.168.1.56): icmp_seq=4 ttl=64 time=0.575 ms
^C
--- linux3.local ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3005ms
rtt min/avg/max/mdev = 0.557/0.731/0.983/0.176 ms
etudiant@ordi:~$
linux3 répond bien !
Attention !! : pour le tp , nous avons fait un compte prof fictif pour l’exemple ! mais vous allez remplacer par votre login 1gXstuYY
etudiant@ordi:~$ ssh prof@linux3.local
The authenticity of host 'linux3.local (192.168.1.56)' can't be established.
ED25519 key fingerprint is SHA256:eiLYSw4LYp6st4ng/8K/THA5rXzj8tjlaf2rRyfl3zo.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])?
répondre yes ! pour créer la clé public/privée , ca se fera qu’une fois a priori entre votre machine et linux3 .. car ssh est sécurisé !
prof@linux3:~$ ls
prof@linux3:~$
prof@linux3:~$ hostname
linux3
prof@linux3:~$
nous sommes bien sur linux3!
Qui est dans la salle informatique plus loin!
Sans doute qu’il n y a rien dans votre repertoire de travail!
maintenant on revient en local, c’est à dire sur votre machine de travail.
et on va copier à distance le répertoire Works local en distant sur linux3 ! ne pas oublier que votre professeur va noter ce que vous mettrez sur linux3 et non pas sur votre machine locale!
attention a bien mettre votre login ! et de connaitre votre mot de passe sur linux3
important les « : » à la fin , si il n y a rien derrière les : c’est dans votre espace personnel , sinon vous pouvez indiquer un chemin
etudiant@ordi:~$ scp -r Works/ prof@linux3.local:
prof@linux3.local's password:
test.sh 100% 10 10.1KB/s 00:00
bonjour1.txt 100% 19 42.9KB/s 00:00
fichier.txt 100% 16 43.8KB/s 00:00
bonjour.txt 100% 19 49.7KB/s 00:00
bonjour.txt 100% 17 40.4KB/s 00:00
test 100% 16KB 13.1MB/s 00:00
testmdp 100% 16KB 26.9MB/s 00:00
testmdp.c 100% 581 1.5MB/s 00:00
Hello 100% 65 170.4KB/s 00:00
lesdeux 100% 84 211.6KB/s 00:00
bonjour.txt 100% 19 49.2KB/s 00:00
etudiant@ordi:~$
-r pour récursif !! un concept déja vu, n’est ce pas , si on ne le met pas ca concerne un seul et unique fichier !
6-2 Aller sur linux3! locale/distante
machine locale:
etudiant@ordi:~$ ls
Bureau Images Musique Public Téléchargements Works
Documents Modèles snap Vidéos
etudiant@ordi:~$
machine distante linux3!
prof@linux3:~$ ls
Works
prof@linux3:~$
tree machine locale :
etudiant@ordi:~$ tree Works/
Works/
├── TP0_LINUX
│ ├── bonjour.txt
│ ├── Hello
│ └── lesdeux
└── TP1_LINUX
├── directory_0
│ └── directory_1
│ └── directory_2
│ └── directory_3
│ └── directory_4
│ └── directory_5
│ └── directory_6
│ └── directory_7
│ └── directory_8
│ └── directory_9
│ └── bonjour.txt
└── myfiles
├── bonjour1.txt
├── bonjour.txt
└── fichier.txt
14 directories, 7 files
etudiant@ordi:~$
prof@linux3:~$ tree
.
└── Works
├── TP0_LINUX
│ ├── bonjour.txt
│ ├── Hello
│ └── lesdeux
└── TP1_LINUX
├── directory_0
│ └── directory_1
│ └── directory_2
│ └── directory_3
│ └── directory_4
│ └── directory_5
│ └── directory_6
│ └── directory_7
│ └── directory_8
│ └── directory_9
│ └── bonjour.txt
└── myfiles
├── bonjour1.txt
├── bonjour.txt
└── fichier.txt
15 directories, 7 files
prof@linux3:~$
6-3 récupérer en local un fichier sur la machine distante
etudiant@ordi:~/Works/TP1_LINUX$ mkdir mesfichiers
etudiant@ordi:~/Works/TP1_LINUX$ cd mesfichiers/
etudiant@ordi:~/Works/TP1_LINUX/mesfichiers$ scp prof@linux3.local:Works/TP1_LINUX/myfiles/bonjour.txt .
prof@linux3.local's password:
bonjour.txt 100% 19 44.0KB/s 00:00
etudiant@ordi:~/Works/TP1_LINUX/mesfichiers$ ls
bonjour.txt
etudiant@ordi:~/Works/TP1_LINUX/mesfichiers$
attention ici on dépose le fichier copié dans le répertoire courant ! mais vous pouvez mettre un chemin différent!
6-4 faire avant de partir de la salle !
on rappel que votre machine n’est pas immortel, linux ne protège pas de tout ! mais des précautions sont nécessaires.
Linux3 dispose d’un RAID5 pas immortel non plus , mais une copie du travail sur linux3 est un plus ! (et en plus c’est noté)
une sauvegarde de votre travail sur linux3 de votre machine locale (pour gagner du temps juste le dernier tp)
7 sftp
Secure file transfert protocole descendant (héritier) de ftp (file transfert protocole non sécurisé !)
🔐 Qu’est-ce que sftp ?
- Protocole de transfert de fichiers sécurisé, basé sur SSH.
- Permet de transférer, supprimer, renommer des fichiers entre ta machine et un serveur distant.
etudiant@ordi:~/Works/TP1_LINUX/mesficiers$ sftp prof@linux3.local
prof@linux3.local's password:
Connected to linux3.local.
sftp> ls
Works
sftp> !ls
bonjour.txt
sftp>
!ls fait le ls sur la machine locale ! (mesfichiers)
ls fait le ls sur la machine distante
📁 Commandes principales une fois connecté
| Commande SFTP | Description |
|---|---|
ls | Lister les fichiers distants |
cd dossier | Changer de dossier distant |
pwd | Afficher le dossier distant courant |
lcd dossier | Changer de dossier local |
lpwd | Afficher le dossier local courant |
get fichier | Télécharger un fichier distant → local |
put fichier | Envoyer un fichier local → distant |
mget * | Télécharger plusieurs fichiers |
mput * | Envoyer plusieurs fichiers |
rm fichier | Supprimer un fichier distant |
mkdir nom | Créer un dossier distant |
rmdir nom | Supprimer un dossier distant |
exit / bye | Quitter la session SFTP |
sftp> lpwd
Local working directory: /home/etudiant/Works/TP1_LINUX/mesficiers
sftp> !pwd
/home/etudiant/Works/TP1_LINUX/mesficiers
sftp>
get et put , prendre et poser!
8- Archive avec tar
et envoyer l’archive du tp (ici TP1_LINUX.tar) dans un email avec un titre TP1_LINUX1 , et son compte rendu au format pdf, réalisé sur libre office
