Kirjoittaja Aihe: Rivikomento kopiointiin [Ratkaistu]  (Luettu 516 kertaa)

Leko

  • Käyttäjä
  • Viestejä: 346
    • Profiili
    • taistop.kapsi.fi
Rivikomento kopiointiin [Ratkaistu]
« : 03.04.25 - klo:10.42 »
Kirjoitan varmuuskopiota hakemistosta. Vastaan tulee entisiä vanhempia samannimisiä fileitä. Kaipaan rivikomentoa, joka jatkaisi kopiointia pysähtymättä kysymään, että korvataanko.
« Viimeksi muokattu: 03.04.25 - klo:20.48 kirjoittanut Leko »

Hajakenttä

  • Käyttäjä / moderaattori
  • Viestejä: 1565
    • Profiili
Vs: Rivikomento
« Vastaus #1 : 03.04.25 - klo:12.22 »
Sellainen komentohan on yksinkertaisesti 'cp lähde polkuineen kohde polkuineen' .

EDIT: Oikeastaan 'cp -ua' kun halutaan nimenomaan inkrementaalinen kopiointi entisen päälle lisäten.

Se kopioi entisen tiedoston samannimisen päälle kyselemättä, jolloin entinen tuhoutuu uuden alta siten, että uudet tietueet lisääntyvät siihen, mutta pois ei lähde muuta kuin muuttunet tietueet. Siksi kai nuo sovellukset kysyvätkin, että oltaisiin varmoja, että sitä entistä ei enää haluta säilyttää. Jos entinen pitää säilyttää cp komennon alta niin sen vanhan nimi nimi täytyy muuttaa toiseksi. Tämä täytyy sitten aina harkita erikseen.

Jos aina tehtäisiin täysin uusi kopio ja vanhaan ei koskettaisi lainkaan niin aika pian täyttyisi kaikki tallentimet.

Olen tehnyt varmuuskopioinnista skriptinpätkän jolla olen jo pitkään hoitanut asian kopioimalla koko kotikansion nopeaan 32 GB:n muistikorttiin. Muistikortti kun mahtuu mukavasti piiloon läppärin kylkeen ja todennäköisesti säilyy ehjänä konen kiintolevyn rikkoutuessa. Koneen joutuessa tulipaloon tai varastetuksi se varmuuskopio tietysti menee siinä myös.

Olen tehnyt myös pikakäynnistinkuvakkeen, jolla saan varmuuskopioinnin tapahtumaan yhdellä klikkauksella milloin vain vaivattomasti. Pienellä skriptin viilauksella voisi tietysti tehdä asian automaattisesti ajoitetuksikin, mutta silloin en ehkä tulisi harkinneeksi juuri sitä, että täytyykö siitä vanhasta jokin tiedosto ehdottomasti säilyttää entisellään. Varmuuskopiokortti myös näkyy kätevästi aina tiedostonhallinnassa ja on siitä käytettävissä.

Myöskin koko talletuksen voisi tehdä vaikka pilveenkin pienellä koodin lisäsuunnittelulla. Olen tyytynyt vain tuohon sd-korttiin ja siirrän tärkeitä tiedostoja pilvipalveluun tarvittaessa, joskus koko varmuuskopionkin.

Tässä on se skripti. Saa käyttää ja kehittää.

Koodia: [Valitse]
#!/bin/sh
if ! mount | grep -qE '^/dev/[^ ]+ on /media/timo/backupkortti'
then
    echo "Kohdetta bacupkortti ei löytynyt, tai se ei ole mountattu. Laita muistikortti kiinni, tai mounttaa se."
sleep 10
    exit 1
fi
mkdir -p /media/timo/backupkortti/Arkisto
if
cp -ua /home/timo/ -t /media/timo/backupkortti/Arkisto/ | echo "Tehdään varmuuskopiota kohteeseen backupkortti, odota!"
then
echo "Tehty!"
else
echo "Hups. Jotain meni väärin."
fi
sleep 5
exit
# Tämä tekee kotihakemiston varmuuskopion sd-kortille
# inkrementaalisesti.
# kortin on oltava nimeltään backupkortti ja ext4 formatoitu.
# Jos backupkortti on formatoitu johonkin muuhun tiedostojärjestelmään, vaikka
# fat32, niin kopiointi kestää kauan ja tulee paljon virheilmoituksia.
# Käynnistä tämä päätteessä komennolla:
# ./tbackup.sh
# Tämä kylläkin kannattaa siirtää sudona rootin hakemistoon:
# /usr/bin
# Silloin se käynnistyy komennolla:
# tbackup.sh
# Muista ajaa komento: chmod a+x tbackup.sh ensin, jotta tulee käyttöoikeus.

« Viimeksi muokattu: 03.04.25 - klo:13.34 kirjoittanut Hajakenttä »
DELL Latitude 5480 Xubuntu 22.04. DELL Latitude 7490 Xubuntu 24.04.
– Memento Vivere – Terv: Timo

nm

  • Käyttäjä
  • Viestejä: 16564
    • Profiili
Vs: Rivikomento
« Vastaus #2 : 03.04.25 - klo:14.01 »
Sellainen komentohan on yksinkertaisesti 'cp lähde polkuineen kohde polkuineen' .

Se kopioi entisen tiedoston samannimisen päälle kyselemättä, jolloin entinen tuhoutuu uuden alta siten, että uudet tietueet lisääntyvät siihen, mutta pois ei lähde muuta kuin muuttunet tietueet. Siksi kai nuo sovellukset kysyvätkin, että oltaisiin varmoja, että sitä entistä ei enää haluta säilyttää. Jos entinen pitää säilyttää cp komennon alta niin sen vanhan nimi nimi täytyy muuttaa toiseksi. Tämä täytyy sitten aina harkita erikseen.

cp:llä voi kopioida myös niin, että olemassa olevat kohdetiedostot säilytetään. Valitsin on -n

Koodia: [Valitse]
cp -n lähdehakemisto/* kohdehakemisto/
Tai jos halutaan päivittää kohdetiedosto, kun lähdetiedoston aikaleima on uudempi, mutta pitää muussa tapauksessa alkuperäinen versio, kopiointi hoituu valitsimella -u

Koodia: [Valitse]
cp -u lähdehakemisto/* kohdehakemisto/
Huomaa myös hakemistopuun (tiedostojen ja alihakemistojen) rekursiivinen kopiointi -R:llä:

Koodia: [Valitse]
cp -u -R lähdehakemisto/* kohdehakemisto/

Leko

  • Käyttäjä
  • Viestejä: 346
    • Profiili
    • taistop.kapsi.fi
Vs: Rivikomento kopiointiin [Ratkaistu]
« Vastaus #3 : 03.04.25 - klo:20.53 »
Kiitos!