Portál AbcLinuxu, 31. července 2025 15:28


Dotaz: bash skript

1.2.2017 10:20 Kamil.Vondra
bash skript
Přečteno: 819×
Odpovědět | Admin
Dobrý den.

Kde dělam chybu?

sudo dd bs=4M if=/dev/mmcblk0 | gzip > /media/Disk1/zaloha/rasspbian``date +"%F"`.gz

Přes terminal ok

Zkoušel jsem to přes crontab a nic.

0 0 * * 5 sudo dd bs=4M if=/dev/mmcblk0 | gzip > /media/Disk1/zaloha/rasspbian``date +"%F"`.gz

Tak jsem to dal do sh skriptu. https://s27.postimg.org/sw11dpnjn/2017_02_01_100530.png

řádek 3: neočekávaný konec souboru při hledání znaku odpovídajícímu „`“

řádek 4: chyba syntaxe: nenadálý konec souboru


Řešení dotazu:


Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

1.2.2017 10:33 trubicoid2
Rozbalit Rozbalit vše Re: bash skript
Odpovědět | | Sbalit | Link | Blokovat | Admin
bych se divil, jestli v terminalu to projde, mas tam jeden znak ` pred date navic

jeste vono se to blbe cte, tak misto `neco` je dobry $(neco)

a v cronu neni treba sudo
1.2.2017 10:45 Kamil.Vondra
Rozbalit Rozbalit vše Re: bash skript
Příloha:
Pracuje, nekecam :)
jeste vono se to blbe cte, tak misto `neco` je dobry $(neco)
Nepochopil jsem. Jsem jen uživatel teto mašinky.
1.2.2017 10:58 hajoucha | skóre: 22
Rozbalit Rozbalit vše Re: bash skript
právěže nepracuje...
Fluttershy, yay! avatar 1.2.2017 10:59 Fluttershy, yay! | skóre: 93 | blog:
Rozbalit Rozbalit vše Re: bash skript
Nepracuje, lol. Ta > na dalším řádku je výzva k zapsání zbytku příkazu.
🇵🇸Touch grass🇺🇦 ✊ ani boha, ani pána
1.2.2017 11:01 OldFrog {Ondra Nemecek} | skóre: 36 | blog: Žabákův notes | Praha
Rozbalit Rozbalit vše Re: bash skript
Ne, to nepracuje - ale čeká na doplnění toho chybějícího znaku `. Tyhle znaky ` musí být párové.

Proto to taky ve skriptu selže, kdežto v terminálu čeká na doplnění.

Takže místo `` dát jen `:
sudo dd bs=4M if=/dev/mmcblk0 | gzip > /media/Disk1/zaloha/rasspbian`date +"%F"`.gz

Anebo to upravit na závorkovou verzi, která je i čitelnější:
sudo dd bs=4M if=/dev/mmcblk0 | gzip > /media/Disk1/zaloha/rasspbian-$(date +"%F").gz
-- OldFrog
1.2.2017 12:08 NN
Rozbalit Rozbalit vše Re: bash skript
V cronu je potreba escapenout procento \%.
k3dAR avatar 1.2.2017 14:21 k3dAR | skóre: 63
Rozbalit Rozbalit vše Re: bash skript
a kdyz uz je jasno jak to ma spravne napsat, tak je na case se zamyslet proc by mel rasbian sam sebe cronem zalohovat pres dd, tedy surova zaloha beziciho systemu se pres dd NEdela, od toho je rsync a podobne nastroje ;)
porad nemam telo, ale uz mam hlavu... nobody
1.2.2017 14:43 cronin | skóre: 49
Rozbalit Rozbalit vše Re: bash skript
Odpovědět | | Sbalit | Link | Blokovat | Admin
Rozsah sudo končí prvou rúrou. Obávam sa, že to nie je to, čo autor myslel.

Ak to má spúšťať cron, je lepšie dať všetko potrebné do skriptu, a v cron-e spúšťať iba skript, s prípadnými parametrami.

Ak to má byť automatizované cron-om alebo čímkoľvek, je dobre urobiť aspoň základné kontroly: Existuje zariadenie? Existuje cieľový adresár? Neexistuje náhodou už cieľový súbor? Je na cieľovom disku dostatok miesta?
Jendа avatar 1.2.2017 15:33 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: bash skript
Odpovědět | | Sbalit | Link | Blokovat | Admin
Děláš to, že začneš číst kartu a cpát ji na externí disk. Co když jsi ale v polovině čtení a někdo zapíše kus souboru na začátek a kus na konec karty? Budeš mít jenom druhou půlku souboru a FS to asi nepřežije.

1.2.2017 17:43 Vantomas | skóre: 32 | Praha
Rozbalit Rozbalit vše Re: bash skript
Tak tak. Osobně pro tento účel používám rdiff-backup, kdy zálohuji celé / a mám udělaný --exclude na /proc, /sys a jiné různé nezálohovatelné adresáře.

rdiff-backup vytváří rozdílové zálohy, takže když se to spouští denně z cronu, na externí úložiště se ukládají pouze změněné soubory a nikoliv kompletní kopie. Dá se to řešit i pouze přes rsync, ale pak se vyrábí vždy celá záloha, což je zbytečně kapacitně náročné nebo je vždy kompletní záloha k okamžiku spuštění. To potom záleží zda je požadavek na to mít možnost vrátit se k datům z určitého dne nebo stačí vždy jen aktuální...

A pokud zůstává ve hře požadavek na kompletní zálohu filesystému, aby se to dalo rychle obnovit, tak bych asi volil btrfs a jeho send/receive features.
2.2.2017 16:22 Andrej | skóre: 51 | blog: Republic of Mordor
Rozbalit Rozbalit vše Re: bash skript

Přesně tak, Btrfs, jeho atomický snapshot a send/receive je rozumné řešení. Kopírování celých médií (ještě k tomu přimountovaných) bez nějaké snahy o checksumy a konzistenci dat vede do stavu, kdy zálohy jsou pouhou iluzí. Iluze záloh může být horší než žádné zálohy (protože ovlivňuje chování a rozhodování uživatelů). Podobně jako iluze zabezpečení může mít horší následky než dobře známá absence zabezpečení.

1.2.2017 20:46 GeorgeWH | skóre: 42
Rozbalit Rozbalit vše Re: bash skript
Odpovědět | | Sbalit | Link | Blokovat | Admin
niekomu, komu je miesto copy&paste lahsie urobit screenshot, uploadnut ho na public server a pridat neklikatelnu linku do fora, niet rady ani pomoci...
2.2.2017 12:15 cronin | skóre: 49
Rozbalit Rozbalit vše Re: bash skript
Ale no tak, možno je to len snaživý začiatočník! Spomínam si na časy, keď som FreeBSD považoval za linuxovú distribúciu a spomínam si, ako mi na českom IRC kanáli ktosi s otcovskou trpezlivosťou vysvetľoval môj omyl. Ani nie dva roky na to som písal o FreeBSD seriál do PC Revue/Infoware.

2.2.2017 13:54 Peter Golis | skóre: 65 | blog: Bežné záležitosti | Bratislava
Rozbalit Rozbalit vše Re: bash skript
To je v poriadku. Ja si spomínam ako AT&T s láskou vysvetľovalo univerzite v Berkley že BSD nie je Unix (TM).
2.2.2017 16:26 Andrej | skóre: 51 | blog: Republic of Mordor
Rozbalit Rozbalit vše Re: bash skript
Odpovědět | | Sbalit | Link | Blokovat | Admin

řádek 3: neočekávaný konec souboru při hledání znaku odpovídajícímu „`“

řádek 4: chyba syntaxe: nenadálý konec souboru

Tohle říká všechno potřebné. Je tam zpětný apostrof navíc, tedy poslední zpětný apostrof je nepárový a shell tedy dojde na konec souboru, aniž by zjistil, kde (to, co považuje za) příkaz ve zpětných apostrofech končí.

Zadáním něčeho takového do terminálu pak samozřejmě člověk dostane nějaký pokračovací prompt (>) a shell (zase) počítá s tím, že uživatel vnořený příkaz někde uzavře.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.