GNU/Linux >> Znalost Linux >  >> Linux

Jak říci Rsync, aby uchoval časové razítko v souborech, když má zdrojový strom připojený bod?

Související s touto otázkou

Stručný popis problému:

Když zdrojový strom obsahuje připojený bod, časová razítka souborů v tomto připojeném bodu při kopírování do cílového stromu nejsou zachována ani při použití -a možnost

Podrobný popis:

Předpokládejme, že toto je zdrojový strom:

                       /home/                           /home/
                         |                                |
                        me/                             BACKUP/
                         |                                |
                    +----+----------+                +----+-------+
                    |    |          |                |    |       |
                 data/  foo.txt    boo.txt         data/ foo.txt boo.txt
                    |                                |
                   a.txt                           a.txt

kde data/ výše je připojen externí USB disk. Vše je ext4 souborový systém. Vše ve zdrojovém kódu je ve vlastnictví mého me .

BACKUP byl také přípojný bod, záložní USB disk.

Po zadání tohoto příkazu rsync -av --delete /home/me/ /home/BACKUP/ , našel jsem, že /home/BACKUP/data/ a vše pod tím má aktuální časové razítko, jako by tyto soubory byly vytvořeny nyní, a ne časové razítko na souborech v /home/me/data/ . Jiné soubory a složky mimo data má časové razítko zachováno v pořádku.

Otázka zní:Jak používat rsync ve výše uvedeném nastavení mu sdělit, že má zachovat časová razítka u všech souborů a složek, dokonce i u souborů a složek v připojeném bodu?

Používám:

>uname -a
Linux 3.5.0-17-generic #28-Ubuntu SMP x86_64 x86_64 x86_64 GNU/Linux

>rsync -v
rsync  version 3.0.9  protocol version 30

Přijatá odpověď:

z man rsync :

   -t, --times                 preserve modification times

EDIT – zlepšit tuto odpověď, protože není hned zřejmé, proč to OP nepomohlo:

OP kopíruje soubory z jednoho souborového systému do druhého a chce zachovat c-time . Většina lidí rozumí c-time znamená „čas vytvoření“, což je na většině systémů UNIX/Linux nesprávné (systémy souborů Windows sledují časy „vytvoření“ nebo „zrození“).

Z velké části v UNIXu a Linuxu c-time je časové razítko použité k zaznamenání posledního inodu ‘C ‘pověsit. Inode se změní, pokud se aktualizuje některý z jeho atributů:

  • tvorba (případ OP)
  • režim (oprávnění)
  • vlastník/skupina
  • počet pevných odkazů
  • atd. (systémové volání stat())

OP nemůže zachovat c-time jejich souborů, když jsou přeneseny do nového souborového systému. Vytvoření těchto souborů v nových souborových systémech je jednou z výše uvedených podmínek (vytvoření inodu/souboru).

/UPRAVIT


Linux
  1. Jak zjistit, zda je soubor stahován pomocí Wget?

  2. Jak selektivně umlčet Rsync?

  3. Jak rozeznat binární soubory od textových souborů v linuxu

  1. Jak RSYNC jeden soubor?

  2. Jak zajistit, aby se příkaz Linux ls zobrazoval jako druhý v časové značce

  3. Jak říct Dolphinu, které soubory má skrýt?

  1. Odhadnout čas nebo práci zbývající do dokončení pro Rsync?

  2. Jak mohu vyloučit soubory ve výchozím nastavení pomocí rsync?

  3. Jak zjistím, jaké soubory má proces otevřené?