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 scp ou sftp)
    • 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 SFTPDescription
lsLister les fichiers distants
cd dossierChanger de dossier distant
pwdAfficher le dossier distant courant
lcd dossierChanger de dossier local
lpwdAfficher le dossier local courant
get fichierTélécharger un fichier distant → local
put fichierEnvoyer un fichier local → distant
mget *Télécharger plusieurs fichiers
mput *Envoyer plusieurs fichiers
rm fichierSupprimer un fichier distant
mkdir nomCréer un dossier distant
rmdir nomSupprimer un dossier distant
exit / byeQuitter 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

Suivre ce lien !

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