Re: OT: bashfråga (igen)
On Thu, 2 Apr 2015 20:52:09 +0200 Per Andersson avtob...@gmail.com wrote: 2015-04-01 11:59 GMT+02:00 j...@lillahusetiskogen.se: On Wed, 1 Apr 2015 01:47:34 +0200 Jo, jag menade modifieringstiden... Och när jag skapar arkivet. Scripten finns i bifogad fil, svnbackup.txt. crontab kör det första scriptet svnback.sh svnback.sh kör svndo.sh två gånger svndo skapar run.sh som sköter arkiveringen I scriptet svndo.sh find $SVN/$1 -newer OLDDATE -exec touch CHANGED {} \; Ovanstående rad kommer att exekvera touch med alla filer som är nyare än filen OLDDATE som argument. Det är därför dina timestamps blir uppdaterade då touch uppdaterar atime, ctime och mtime. Det kan räcka om du tar bort {}, som ersätts med aktuellt filnamn. Om du inte redan testat dem kan jag rekommendera obnam eller rdiff-backup för backuper. -- Per Tack så mycket! Problemet löst tack vara debianlistan. Vad gjorde jag utan den? mvh /Janne -- To UNSUBSCRIBE, email to debian-user-swedish-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org Archive: https://lists.debian.org/20150403105035.67babd14@igor
Re: OT: bashfråga (igen)
2015-04-01 11:59 GMT+02:00 j...@lillahusetiskogen.se: On Wed, 1 Apr 2015 01:47:34 +0200 Jo, jag menade modifieringstiden... Och när jag skapar arkivet. Scripten finns i bifogad fil, svnbackup.txt. crontab kör det första scriptet svnback.sh svnback.sh kör svndo.sh två gånger svndo skapar run.sh som sköter arkiveringen I scriptet svndo.sh find $SVN/$1 -newer OLDDATE -exec touch CHANGED {} \; Ovanstående rad kommer att exekvera touch med alla filer som är nyare än filen OLDDATE som argument. Det är därför dina timestamps blir uppdaterade då touch uppdaterar atime, ctime och mtime. Det kan räcka om du tar bort {}, som ersätts med aktuellt filnamn. Om du inte redan testat dem kan jag rekommendera obnam eller rdiff-backup för backuper. -- Per -- To UNSUBSCRIBE, email to debian-user-swedish-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org Archive: https://lists.debian.org/CABYrXSTZVkTpiy-p=M3R6XL=pkefmtkbalfsqgafdyzhrmp...@mail.gmail.com
Re: OT: bashfråga (igen)
On Wed, 1 Apr 2015 01:47:34 +0200 Per Andersson avtob...@gmail.com wrote: 2015-03-31 19:27 GMT+02:00 j...@lillahusetiskogen.se: Hej! Nu har jag en ny fråga. Följande kommandorad i ett script: tar czf /data/test/fw_m8boot_20150331_191001.tgz /data/svn/fw_m8boot Ändrar creation date (det är väl det som syns i ls -l?) rekursivt i hela /data/svn/fw_m8boot. Verkar helt bisarrt. Eller ska det vara så? I så fall får jag kopiera mappen och sedan köra tar. Jag har inte lagt märke till det tidigare direkt i bash. Menar du att det ändras i /data/svn/fw_m8boot när du gör arkivet? Eller menar du när du extraherar arkivet? Utifrån vad du berättar kan jag inte reproducera beteendet. Gör scriptet något mer? Vad kör du för version av tar? Har du något relevant för tar i din miljö (env | grep TAR) ? Det som ls -l visar är modifieringstiden, mtime, dvs när datan i filen ändrades. -- Per Jag är fortfarande väldigt förbryllad. Med lite tur är det bara jag som är korkad. Jo, jag menade modifieringstiden... Och när jag skapar arkivet. Scripten finns i bifogad fil, svnbackup.txt. crontab kör det första scriptet svnback.sh svnback.sh kör svndo.sh två gånger svndo skapar run.sh som sköter arkiveringen Versionen är tar (GNU tar) 1.26 och inget relevant för tar i miljön. Versionen av Debian är 7.8. Linux sloth 3.2.0-4-686-pae #1 SMP Debian 3.2.65-1 i686 GNU/Linux I filen resultat.txt finns listning av vad som händer. När jag skrev scripten testade jag på min desktopdator och där fungerar det som väntat. /Janne root@sloth:/data/svn# cat svnback.sh #!/bin/bash touch WHEN #create a file with the date without trailing LF date +%Y%m%d_%H%M%S | tr -d '\n' NEWDATE #do needed backups ./svndo.sh fw_m8a ./svndo.sh fw_m8boot #save date mv NEWDATE OLDDATE #EOF 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 root@sloth:/data/svn# cat svndo.sh #!/bin/bash TARGET=/data/test SVN=/data/svn #check if repository changed since last time rm CHANGED 2 /dev/null find $SVN/$1 -newer OLDDATE -exec touch CHANGED {} \; if [ -e CHANGED ]; then echo $1 will be backed up svn.log echo -n tar czf $TARGET/$1_ run.sh cat NEWDATE run.sh echo .tgz $SVN/$1 run.sh sh run.sh else echo $1 already backed up svn.log fi #EOF 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 root@sloth:/data/svn# cat run.sh tar czf /data/test/fw_m8boot_20150401_113318.tgz /data/svn/fw_m8boot root@sloth:/data/svn# root@sloth:/data/svn# ls -lR fw_m8a/ fw_m8a/: total 24 -rwxrwxrwx 1 root svn 229 Apr 1 11:33 README.txt drwxrwxrwx 2 root svn 4096 Apr 1 11:33 conf drwxrwsrwx 6 root svn 4096 Apr 1 11:33 db -rwxrwxrwx 1 root svn2 Apr 1 11:33 format drwxrwxrwx 2 root svn 4096 Apr 1 11:33 hooks drwxrwxrwx 2 root svn 4096 Apr 1 11:33 locks fw_m8a/conf: total 12 -rwxrwxrwx 1 root svn 1080 Apr 1 11:33 authz -rwxrwxrwx 1 root svn 309 Apr 1 11:33 passwd -rwxrwxrwx 1 root svn 2279 Apr 1 11:33 svnserve.conf fw_m8a/db: total 64 -rwxrwxrwx 1 jan svn 2 Apr 1 11:33 current -rwxrwxrwx 1 root svn22 Apr 1 11:33 format -rwxrwxrwx 1 root svn 5 Apr 1 11:33 fs-type -rwxrwxrwx 1 root svn 1920 Apr 1 11:33 fsfs.conf -rwxrwxrwx 1 root svn 2 Apr 1 11:33 min-unpacked-rev -rwxrwxrwx 1 jan svn 17408 Apr 1 11:33 rep-cache.db drwxrwsrwx 3 root svn 4096 Apr 1 11:33 revprops drwxrwsrwx 3 root svn 4096 Apr 1 11:33 revs drwxrwsrwx 2 root svn 4096 Apr 1 11:33 transactions -rwxrwxrwx 1 jan svn 2 Apr 1 11:33 txn-current -rwxrwxrwx 1 root svn 0 Apr 1 11:33 txn-current-lock drwxrwsrwx 2 root svn 4096 Apr 1 11:33 txn-protorevs -rwxrwxrwx 1 root svn37 Apr 1 11:33 uuid -rwxrwxrwx 1 root svn 0 Apr 1 11:33 write-lock fw_m8a/db/revprops: total 4 drwxrwsrwx 2 root svn 4096 Apr 1 11:33 0 fw_m8a/db/revprops/0: total 16 -rwxrwxrwx 1 root svn 50 Apr 1 11:33 0 -rwxrwxrwx 1 jan svn 112 Apr 1 11:33 1 -rwxrwxrwx 1 jan svn 110 Apr 1 11:33 2 -rwxrwxrwx 1 jan svn 134 Apr 1 11:33 3 fw_m8a/db/revs: total 4 drwxrwsrwx 2 root svn 4096 Apr 1 11:33 0 fw_m8a/db/revs/0: total 652 -rwxrwxrwx 1 root svn115 Apr 1 11:33 0 -rwxrwxrwx 1 jan svn 299692 Apr 1 11:33 1 -rwxrwxrwx 1 jan svn 286884 Apr 1 11:33 2 -rwxrwxrwx 1 jan svn 67665 Apr 1 11:33 3 fw_m8a/db/transactions: total 0 fw_m8a/db/txn-protorevs: total 0 fw_m8a/hooks: total 36 -rwxrwxrwx 1 root svn 2022 Apr 1 11:33 post-commit.tmpl -rwxrwxrwx 1 root svn 1663 Apr 1 11:33 post-lock.tmpl -rwxrwxrwx 1 root svn 2344 Apr 1 11:33 post-revprop-change.tmpl -rwxrwxrwx 1 root svn 1592 Apr 1 11:33 post-unlock.tmpl -rwxrwxrwx 1 root svn 3510 Apr 1 11:33 pre-commit.tmpl -rwxrwxrwx 1 root svn 2410 Apr 1 11:33 pre-lock.tmpl -rwxrwxrwx 1 root svn 2818 Apr 1 11:33 pre-revprop-change.tmpl -rwxrwxrwx 1 root svn 2100 Apr 1 11:33 pre-unlock.tmpl -rwxrwxrwx 1 root svn 2852 Apr 1 11:33 start-commit.tmpl fw_m8a/locks: total 8 -rwxrwxrwx 1 root svn 139 Apr 1 11:33 db-logs.lock -rwxrwxrwx 1 root svn 139 Apr 1 11:33 db.lock root@sloth:/data/svn#
Re: OT: bashfråga (igen)
On Wed, 01 Apr 2015 13:46:03 +0200 Sven Arvidsson s...@whiz.se wrote: On Tue, 2015-03-31 at 19:27 +0200, j...@lillahusetiskogen.se wrote: Hej! Nu har jag en ny fråga. Följande kommandorad i ett script: tar czf /data/test/fw_m8boot_20150331_191001.tgz /data/svn/fw_m8boot Ändrar creation date (det är väl det som syns i ls -l?) rekursivt i hela /data/svn/fw_m8boot. Verkar helt bisarrt. Eller ska det vara så? I så fall får jag kopiera mappen och sedan köra tar. Jag har inte lagt märke till det tidigare direkt i bash. Det är inte så att du använder nåt konstigt filsystem på /data ? Nej vanligt ext4. /Janne -- To UNSUBSCRIBE, email to debian-user-swedish-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org Archive: https://lists.debian.org/20150401141235.34b6b520@igor
Re: OT: bashfråga (igen)
On Tue, 2015-03-31 at 19:27 +0200, j...@lillahusetiskogen.se wrote: Hej! Nu har jag en ny fråga. Följande kommandorad i ett script: tar czf /data/test/fw_m8boot_20150331_191001.tgz /data/svn/fw_m8boot Ändrar creation date (det är väl det som syns i ls -l?) rekursivt i hela /data/svn/fw_m8boot. Verkar helt bisarrt. Eller ska det vara så? I så fall får jag kopiera mappen och sedan köra tar. Jag har inte lagt märke till det tidigare direkt i bash. Det är inte så att du använder nåt konstigt filsystem på /data ? -- Cheers, Sven Arvidsson http://www.whiz.se PGP Key ID 6FAB5CD5 signature.asc Description: This is a digitally signed message part
Re: OT: bashfråga (igen)
Hej! Nu har jag en ny fråga. Följande kommandorad i ett script: tar czf /data/test/fw_m8boot_20150331_191001.tgz /data/svn/fw_m8boot Ändrar creation date (det är väl det som syns i ls -l?) rekursivt i hela /data/svn/fw_m8boot. Verkar helt bisarrt. Eller ska det vara så? I så fall får jag kopiera mappen och sedan köra tar. Jag har inte lagt märke till det tidigare direkt i bash. /Janne -- To UNSUBSCRIBE, email to debian-user-swedish-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org Archive: https://lists.debian.org/20150331192739.32e4992c@igor
Re: OT: bashfråga (igen)
2015-03-31 19:27 GMT+02:00 j...@lillahusetiskogen.se: Hej! Nu har jag en ny fråga. Följande kommandorad i ett script: tar czf /data/test/fw_m8boot_20150331_191001.tgz /data/svn/fw_m8boot Ändrar creation date (det är väl det som syns i ls -l?) rekursivt i hela /data/svn/fw_m8boot. Verkar helt bisarrt. Eller ska det vara så? I så fall får jag kopiera mappen och sedan köra tar. Jag har inte lagt märke till det tidigare direkt i bash. Menar du att det ändras i /data/svn/fw_m8boot när du gör arkivet? Eller menar du när du extraherar arkivet? Utifrån vad du berättar kan jag inte reproducera beteendet. Gör scriptet något mer? Vad kör du för version av tar? Har du något relevant för tar i din miljö (env | grep TAR) ? Det som ls -l visar är modifieringstiden, mtime, dvs när datan i filen ändrades. -- Per -- To UNSUBSCRIBE, email to debian-user-swedish-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org Archive: https://lists.debian.org/CABYrXSTrVaD1Qz97=whelcjbgfw_uwyqo79kxumjir+eyjk...@mail.gmail.com
Re: OT: bashfråga
j...@lillahusetiskogen.se: Skulle naturligtvis kunna skriva ett C-program som ger mig exakt det men jag skulle vilja göra det i ett bash-script. http://lmgtfy.com/?q=cut+newline+from+end+of+line+linux+bash ger mig: date +%Y%m%d_%H%M%S | xargs echo -n Fast det ger tre binärer (date, xargs och echo), då kanske Perl kan vara snabbare: perl -e 'use POSIX;print strftime(%Y%m%d_%H%M%S,localtime)' -- \\// Peter - http://www.softwolves.pp.se/ -- To UNSUBSCRIBE, email to debian-user-swedish-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org Archive: https://lists.debian.org/alpine.deb.2.00.1503301506550.31...@ds9.cixit.se
Re: OT: bashfråga
On Mon, 30 Mar 2015 16:14:36 +0200 Andreas Ronnquist mailingli...@gusnan.se wrote: date +%Y%m%d_%H%M%S | tr -d '\n' Stort tack Peter och Andreas! mvh /Janne -- To UNSUBSCRIBE, email to debian-user-swedish-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org Archive: https://lists.debian.org/20150330162038.337ac59e@igor
Re: OT: bashfråga
On 30 Mar 2015 15:59 +0200, from j...@lillahusetiskogen.se: Jag behöver en fil som innehåller en datumsträng utan LF i slutet. Skulle naturligtvis kunna skriva ett C-program som ger mig exakt det men jag skulle vilja göra det i ett bash-script. Nedanstående fungerar men det känns väldigt yxigt, speciellt sed-kommandot. Någon som har ett bättre förslag? date +%Y%m%d_%H%M%S tmp sed s/\ // tmp NEWDATE 2 /dev/null $ echo -n $(date +'%Y%m%d_%H%M%S') tmp $ hexdump -C tmp 32 30 31 35 30 33 33 30 5f 31 36 31 39 30 37 |20150330_161907| 000f $ kanske kan vara något? Alternativt använd printf istället för echo -n: $ printf %s $(date +'%Y%m%d_%H%M%S') tmp för samma resultat. -- Michael Kjörling • https://michael.kjorling.se • mich...@kjorling.se OpenPGP B501AC6429EF4514 https://michael.kjorling.se/public-keys/pgp “People who think they know everything really annoy those of us who know we don’t.” (Bjarne Stroustrup) -- To UNSUBSCRIBE, email to debian-user-swedish-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org Archive: https://lists.debian.org/20150330142211.gc15...@yeono.kjorling.se
Re: OT: bashfråga
On 30 Mar 2015 15:09 +0100, from pe...@softwolves.pp.se (Peter Krefting): Fast det ger tre binärer (date, xargs och echo), då kanske Perl kan vara snabbare: perl -e 'use POSIX;print strftime(%Y%m%d_%H%M%S,localtime)' Om du tror att svaret är Perl är snabbare så är det mest troligt fel på frågan. :-) Då vinner nog min lösning med printf, endast en relativt lättviktig binär (date; _någon_ variant på det temat är nog svår att undvika) som ska startas, och printf är inbyggt i bash. -- Michael Kjörling • https://michael.kjorling.se • mich...@kjorling.se OpenPGP B501AC6429EF4514 https://michael.kjorling.se/public-keys/pgp “People who think they know everything really annoy those of us who know we don’t.” (Bjarne Stroustrup) -- To UNSUBSCRIBE, email to debian-user-swedish-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org Archive: https://lists.debian.org/20150330142740.gd15...@yeono.kjorling.se
Re: OT: bashfråga
On Mon, 2015-03-30 at 15:59 +0200, j...@lillahusetiskogen.se wrote: Jag behöver en fil som innehåller en datumsträng utan LF i slutet. Skulle naturligtvis kunna skriva ett C-program som ger mig exakt det men jag skulle vilja göra det i ett bash-script. Nedanstående fungerar men det känns väldigt yxigt, speciellt sed-kommandot. Någon som har ett bättre förslag? date +%Y%m%d_%H%M%S tmp sed s/\ // tmp NEWDATE 2 /dev/null Med hopp om svar. /Janne Det går i iaf att förenkla det: date +%Y%m%d_%H%M%S | tr -d '\n' Men om du läser in det värdet som en variabel i ett script tror jag inte det spelar någon roll med newline på slutet eller inte. -- Cheers, Sven Arvidsson http://www.whiz.se PGP Key ID 6FAB5CD5 signature.asc Description: This is a digitally signed message part
Re: OT: bashfråga
On Mon, 30 Mar 2015 16:30:36 +0200 Sven Arvidsson s...@whiz.se wrote: On Mon, 2015-03-30 at 15:59 +0200, j...@lillahusetiskogen.se wrote: Jag behöver en fil som innehåller en datumsträng utan LF i slutet. Skulle naturligtvis kunna skriva ett C-program som ger mig exakt det men jag skulle vilja göra det i ett bash-script. Nedanstående fungerar men det känns väldigt yxigt, speciellt sed-kommandot. Någon som har ett bättre förslag? date +%Y%m%d_%H%M%S tmp sed s/\ // tmp NEWDATE 2 /dev/null Med hopp om svar. /Janne Det går i iaf att förenkla det: date +%Y%m%d_%H%M%S | tr -d '\n' Men om du läser in det värdet som en variabel i ett script tror jag inte det spelar någon roll med newline på slutet eller inte. Många lösningar blev det... Det jag gör är att jag skapar en fil med ett kommando där det ingår ett filnamn med datumet mitt i. Sedan exekverar jag den filen. Är helt övertygar om att det finns bättre sätt men om man nästan aldrig programmerar bash så gäller det att inte krångla till det. /Janne -- To UNSUBSCRIBE, email to debian-user-swedish-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org Archive: https://lists.debian.org/20150330170409.69553039@igor
Re: OT: bashfråga
Hej. Den 30 mar 2015 16:00 skrev j...@lillahusetiskogen.se: Jag behöver en fil som innehåller en datumsträng utan LF i slutet. Skulle naturligtvis kunna skriva ett C-program som ger mig exakt det men jag skulle vilja göra det i ett bash-script. Vilket är program, så det fungerar. Nedanstående fungerar men det känns väldigt yxigt, speciellt sed-kommandot. Någon som har ett bättre förslag? date +%Y%m%d_%H%M%S tmp sed s/\ // tmp NEWDATE 2 /dev/null Varför pipar du inte utmatningen från date(1) direkt in i sed(1)? $ date +%Y%m%d_%H%M%S | sed -e s/\n// - Annars så läser man på manualsidan för date och ser att ISO8601 stöds direkt (exempelvis med växeln --Isecond till date) eller för datum kan %x eller %F var bra val och tid %X eller %T kan vara lämpliga val, om formatet inte är hugget i sten. Notera skillnaden mellan x och F och X T i manualsidan. Samt att växeln -n till echo(1) inte skriver ut något nyradstecken. $ date +%x_%X 2015-03-30_17:28:47 $ date +%F_%T 2015-03-30_17:28:49 $ mydate=$(date +%F_%T | sed -e s/-//g -e s/://g -) $ echo -n $mydate | hexdump -C 32 30 31 35 30 33 33 30 5f 31 37 32 37 31 31 |20150330_172711| 000f eller för ANSI-standard och inte bashism, dvs `` istf $() $ echo -n `date +%F_%T | sed -e s/-//g -e s/://g -` | hexdump -C 32 30 31 35 30 33 33 30 5f 31 37 33 32 32 37 |20150330_173227| 000f eller använd tr(1) för att ta bort tecken $ date +%F_%T | tr -d [:space:]:- | hexdump -C 32 30 31 35 30 33 33 30 5f 31 37 32 34 34 37 |20150330_172447| 000f eller använd printf(1) eller perl(1) eller python(1) för att ta bort \n. Men enklast är nog echo(1) med växeln -n samt att exekvera date(1) i ett Command Substitution, se manualsidan för bash(1). man 1 bash # skriv sedan /\$\( följt av enter och / följt av enter tills du hittar $(command), då backar du ett steg med b. Med hopp om svar. /Janne /Jackson PS: Tack Michael för hexdump(1) DS: