# Debian

Vous trouverez ici mes astuces d'administration Debian.

# Commande en vrack

## Vidéo
Voici l'explication suivie de chaque commande à copier :  

Afficher les informations d'un fichier vidéo :

```bash
ffmpeg -i "input.mp4"
```  
Extraire la piste audio d'une vidéo en la copiant sans réencodage :

```bash
ffmpeg -vn -i "input.mp4" -c:a copy "output_audio.m4a"
```  
Créer une version sans son d'une vidéo :

```bash
ffmpeg -hide_banner -i "input.mp4" -c:v copy -an "output_muted.mp4"
```
```bash
ffmpeg -i "input.mp4" -c copy "output.mp4"
```  
```bash
ffmpeg -i "input.mp4" -c copy "output.mkv"
```  
```bash
ffmpeg -i "input.mov" -c copy "output.mp4"
```  
```bash
ffmpeg -i "input.aac" -c copy "output.m4a"
```
Mélange audio avec la vidéo :
```bash
ffmpeg -i "video.mp4" -i "audio.m4a" -c copy -map 0:v -map 1:a "output.mp4"
```
Si vous souhaitez convertir tous types de fichiers vidéo, vous pouvez modifier la boucle :

```bash
for f in *.{mov,mp4,avi,mkv}; do
    # Vérifie si le fichier existe
    if [ -e "$f" ]; then
        filename="${f%.*}"
        ffmpeg -hide_banner -i "$f" -c:v libx264 -c:a aac "${filename}.mkv"
    fi
done
```
### Comment utiliser :
1. Enregistrez dans un fichier, par exemple `convert_to_mkv.sh`.
2. R rendez-le exécutable :  
   ```bash
   chmod +x convert_to_mkv.sh
   ```
3. Et lancez-le dans le terminal :  
   ```bash
   ./convert_to_mkv.sh
   ```
Pour convertir une vidéo en GIF avec ffmpeg, vous pouvez utiliser la commande suivante :

```bash
ffmpeg -i input_video.mp4 -vf "fps=10,scale=320:-1:flags=lanczos" -loop 0 output.gif
```
Incorporer un fichier de sous-titres SRT dans une vidéo :
Incorporer un fichier de sous-titres SRT dans une vidéo :

```bash
# MP4
ffmpeg -i video.mp4 -i sous-titres.srt -c:v copy -c:a copy -c:s mov_text -metadata:s:s:0 language=fra output.mp4
```

```bash
# MKV
ffmpeg -i video.mp4 -i sous-titres.srt -c:v copy -c:a copy -c:s srt -metadata:s:s:0 language=fra output.mkv
```

```bash
# AVI
ffmpeg -i video.mp4 -i sous-titres.srt -c:v copy -c:a copy -c:s srt -metadata:s:s:0 language=fra output.avi
```

```bash
# WebM
ffmpeg -i video.mp4 -i sous-titres.srt -c:v copy -c:a copy -c:s webvtt -metadata:s:s:0 language=fra output.webm
```

## NAS / SERVEUR

Pour générer la locale :

```bash
sudo locale-gen ch_FR.UTF-8 && source /etc/default/locale
```

La commande `sudo badblocks -wsv /dev/sda` effectue un test destructif complet du disque, en écrivant puis relisant chaque bloc afin de détecter les secteurs défectueux, tout en affichant la progression en temps réel.
```bash
sudo badblocks -wsv /dev/sdX
```
Stress disque :
```bash
sudo fio --name=full_rw_test_8h --filename=/dev/sdX --ioengine=libaio --rw=randrw --bs=1M --size=100% --numjobs=4 --runtime=28800 --time_based --group_reporting --direct=1 --iodepth=32 --rwmixread=50 --output=full_rw_test_8h.log
```

Sauvegarde horodatée du crontab root avec purge automatique des archives de plus de 7 jours :

```bash
sudo bash -c 'd=/var/backups/crontab; mkdir -p "d" && crontab -u root -l | gzip -c > "$d/crontab-root-(date +%F_%H-%M-%S).gz" && find "$d" -type f -name "crontab-root-*.gz" -mtime +7 -delete'
```

## Voir vitesse carte réseau

**1. Installer ethtool**

```bash
sudo apt install ethtool
```

**2. Voir la liste des interfaces réseau**

```bash
ip link show
```

Notez le nom de l’interface que vous voulez examiner (ex : enp3s0, eth0, etc.).

**3. Afficher les détails d’une interface spécifique**
```bash
sudo ethtool nom_interface
```

(Remplacez nom_interface par le nom réel, par exemple : sudo ethtool enp3s0).

### La commande Linux pour compresser chaque dossier individuellement en une seule ligne

```bash
for dir in */; do zip -r "${dir%/}.zip" "$dir"; done
```

## Archive
Sauvegarder rapidement un fichier ou un dossier
```bash
tar -czf ./nomexemple_$(date +%Y-%m-%d).tar.gz /etc/zabbix/exemple.conf
```


Compresser chaque dossier individuellement : 
```bash
for dir in */; do
    zip -r "${dir%/}.zip" "$dir"
done
```
## Docker 

Copier les données d'un volume vers le dossier courant

```bash
docker run --rm -v minecraft-papermc-server_minecraftserver:/source -v $(pwd)/data:/destination alpine cp -r /source/. /destination/
``` 
Changez le nom du volume minecraft-papermc par votre volume et /data par le dossier que voulez copier

Voici la meilleure commande 7z pour obtenir une compression maximale :

## Commande optimale pour compression maximale

```bash
7z a -t7z -m0=lzma2 -mx=9 -mfb=64 -md=32m -ms=on archive.7z dossier_ou_fichiers/
```

## Explication des paramètres

- **`a`** : Ajouter des fichiers à l'archive
- **`-t7z`** : Format 7z (meilleur que zip)
- **`-m0=lzma2`** : Algorithme LZMA2 (le plus efficace)
- **`-mx=9`** : Niveau de compression maximum (0-9)
- **`-mfb=64`** : Taille du dictionnaire de 64 mots
- **`-md=32m`** : Dictionnaire de 32 MB
- **`-ms=on`** : Archive solide activée

## Variantes selon le contexte

### Pour des fichiers texte/code :
```bash
7z a -t7z -m0=lzma2 -mx=9 -mfb=273 -md=64m -ms=on archive.7z fichiers/
```

### Pour une compression ultra (très lente) :
```bash
7z a -t7z -m0=lzma2 -mx=9 -mfb=273 -md=128m -ms=on -mmt=1 archive.7z fichiers/
```

### Avec mot de passe :
```bash
7z a -t7z -m0=lzma2 -mx=9 -md=32m -ms=on -mhe=on -p archive.7z fichiers/
```

### Notes importantes

- ⏱️ **Temps** : Plus lent mais meilleure compression
- 💾 **RAM** : Utilise plus de mémoire (32-128 MB)
- 🎯 **Efficacité** : Excellent sur textes, documents, code
- ⚡ **Alternative rapide** : Utilisez `-mx=7` pour un bon compromis vitesse/compression

La première commande offre le meilleur équilibre entre compression maximale et temps de traitement raisonnable.

## Télécharger avec wget

```bash
wget --content-disposition --no-check-certificate "http://nomdusite.com/XXX"
```