Máte rádi retro a potřebujete např. stará score CD/DVD nebo Level CD/DVD zazálohovat do počítače, protože nevíte, jak dlouho vám taková CD/DVD ještě vydrží stát na poličce, než se rozpadnou a nic z nich už nepřečtete?
Vzal jsem starší bigtower, starší jednojádro, našel jsem 3x SATA mechaniky, další 3x IDE mechaniky. Pozapojoval jsem, nainstaloval jsem na SATA SSD disk LXLE (který doporučuji, protože vám bude vcelku obstojně fungovat plnohodnotný Ubuntu Linux na starém šrotu a nebude to žrát víc než 180 MB RAM po náběhu GUI). V zásadě vám ale stačí jakákoliv distribuce Linuxu.
No a pak jsem zkusil navštívit chatGPT, popsal jsem požadavky a vyplivlo mi to naprosto nefunkční, hezky vypadající skript, který nic nedělal, nevypsal ani žádný error, nefungoval.
Takže jsem ChatGPT místo dlouhého zkoumání a debugování zahodil a napsal si sám vlastní prasobash script, který vám tu sem nechám.
Jak zjistím, která mechanika je která?
Mechaniky v linuxu se identifikují jako zařízení /dev/sr0 až /dev/sr255
Hádám, že 256 zařízení asi těžko připojíte (ale pokud se o to pokusíte, tak mi někde pošlete fotky dolů do komentářů.
Každopádně v mém případě jdou mechaniky od nejvrchnější po nejnižší (polepil jsem si je lepítkama s čísly) 0, 1, 4, 5, 3, 2,.
Jak zjistím pořadí vlastních CD/DVD mechanik?
Zadejte řádek po řádku následující příkazy a sledujte, která mechanika se otevře:
eject /dev/sr0
eject /dev/sr1
eject /dev/sr2
eject /dev/sr3
eject /dev/sr4
eject /dev/sr5
eject /dev/sr6 ...až /dev/sr255
Podle pořadí si pak udělejte poznámku, která mechanika je která, ať se nespletete.
Bash script
#!/bin/bash
###SETTINGS
path="/mnt/" #Upravte si sem cestu, kam chcete nahrávat/zálohovat image z CDček/DVDček
order=(0 1 4 5 3 2) #Poradi jednotlivych mechanik jak jdo po sobe fyzicky od nejvyse polozene po nejnize polozenou ve skrini PC - upravte si, jak to máte vy v PC
###END SETTINGS
names=();
echo "SKRIPT NA MOUNTOVANI 6 mechanik od shoru dolu $order"
for poradi in "${order[@]}"; do
echo "zadej $poradi . název .iso a potvrď enterem: (jen název bez .iso): "
read name
names[$poradi]="$name"
done
echo "Odmountovavam vsechny mechaniky pro pripad, ze byly mountnuty predtim do jineho adresare:"
for poradi in "${order[@]}"; do
umount /dev/sr$poradi
done
echo "Mountuji vsechny mechaniky do adresaru /sr0 /sr1 atd..."
for poradi in "${order[@]}"; do
echo "mountuji /dev/sr$poradi"
mount /dev/sr$poradi /sr$poradi
done
for poradi in ${order[@]}; do
output_path=$path${names[$poradi]}\.iso #kam do ktereho souboru ulozit zalohu napr. /mnt/soubor.iso
drivenumber=$poradi #poradi mechaniky
echo "Delam .iso z /dev/sr$drivenumber do $output_path"
dd if="/dev/sr$drivenumber" of="$output_path" bs=4M status=progress 2>>log3.txt && eject /dev/sr$drivenumber &
echo $output_path >> log3.txt
echo $output_path
done
Závěr
Výsledek bude, že vám těchto 6 mechanik nasype .iso image v /mnt/název.iso