GNU/Linux >> Znalost Linux >  >> Linux

Jak synchronizovat dvě složky pomocí nástrojů příkazového řádku?

Tím se složka A umístí do složky B:

rsync -avu --delete "/home/user/A" "/home/user/B"  

Pokud chcete obsah složek A a B aby bylo stejné, vložte 02 (s lomítkem) jako zdroj. Tím se nevezme složka A, ale veškerý její obsah a vloží se do složky B. Takto:

rsync -avu --delete "/home/user/A/" "/home/user/B"
  • 19 Proveďte synchronizaci se zachováním všech atributů souborového systému
  • 28 běžet podrobně
  • 36 kopírujte pouze soubory s novějším časem úpravy (nebo rozdílem velikosti, pokud jsou časy stejné)
  • 43 odstranit soubory v cílové složce, které ve zdroji neexistují

Manuální stránka:https://download.samba.org/pub/rsync/rsync.html


Můžete 59 nástroj vyvinutý Benjaminem Piercem z U Penn.

Předpokládejme, že máte dva adresáře,

63 a 75

K synchronizaci těchto dvou můžete použít:

~$88

Na výstupu 95 zobrazí každý adresář a soubor, který je jiný ve dvou adresářích, které jste požádali o synchronizaci. Doporučí aditivně synchronizovat (replikovat chybějící soubor v obou umístěních) při prvním spuštění, poté vytvořit a udržovat strom synchronizace na vašem počítači a při dalších spuštěních implementuje skutečnou synchronizaci (tj. pokud smažete soubor z 108 , bude smazán z 115 také. Můžete také porovnat každou změnu a volitelně zvolit možnost předat nebo zpětně synchronizovat mezi dvěma adresáři.

Chcete-li spustit grafické rozhraní, jednoduše odstraňte 126 možnost z vašeho příkazu, i když jsem našel 131 jednodušší a rychlejší.

Více o tomto:Unison výukový program v uživatelské dokumentaci Unison.


Odpověď od TuxForLife je docela dobrá, ale důrazně doporučuji použít 149 při místní synchronizaci. Můžete namítnout, že to nestojí za časovou/síťovou penalizaci pro vzdálené synchronizace, ale pro místní soubory se to zcela vyplatí, protože rychlost je tak velká.

-c, --checksum
       This forces the sender to checksum every regular file using a 128-bit  MD4
       checksum.   It  does this during the initial file-system scan as it builds
       the list of all available files. The receiver then checksums  its  version
       of  each  file  (if  it exists and it has the same size as its sender-side
       counterpart) in order to decide which files need to be updated: files with
       either  a  changed  size  or a changed checksum are selected for transfer.
       Since this whole-file checksumming of all files on both sides of the  con-
       nection  occurs  in  addition to the automatic checksum verifications that
       occur during a file's transfer, this option can be quite slow.

       Note that rsync always verifies that each transferred file  was  correctly
       reconstructed  on  the receiving side by checking its whole-file checksum,
       but that automatic after-the-transfer verification has nothing to do  with
       this  option's  before-the-transfer  "Does  this file need to be updated?"
       check.

To ukazuje, jak vám může selhat stejná velikost a časová razítka.

Nastavení

$ cd /tmp

$ mkdir -p {A,b}/1/2/{3,4}

$ echo "\___________from A" | \
      tee A/1/2/x  | tee A/1/2/3/y  | tee A/1/2/4/z  | \
  tr A b | \
      tee b/1/2/x  | tee b/1/2/3/y  | tee b/1/2/4/z  | \
      tee b/1/2/x0 | tee b/1/2/3/y0 >     b/1/2/4/z0

$ find A b -type f | xargs -I% sh -c "echo %; cat %;"
A/1/2/3/y
\___________from A
A/1/2/4/z
\___________from A
A/1/2/x
\___________from A
b/1/2/3/y
\___________from b
b/1/2/3/y0
\___________from b
b/1/2/4/z
\___________from b
b/1/2/4/z0
\___________from b
b/1/2/x
\___________from b
b/1/2/x0
\___________from b

Rsync, který nic nekopíruje, protože všechny soubory mají stejnou velikost a časové razítko

$ rsync -avu A/ b
building file list ... done

sent 138 bytes  received 20 bytes  316.00 bytes/sec
total size is 57  speedup is 0.36

$ find A b -type f | xargs -I% sh -c "echo %; cat %;"
A/1/2/3/y
\___________from A
A/1/2/4/z
\___________from A
A/1/2/x
\___________from A
b/1/2/3/y
\___________from b
b/1/2/3/y0
\___________from b
b/1/2/4/z
\___________from b
b/1/2/4/z0
\___________from b
b/1/2/x
\___________from b
b/1/2/x0
\___________from b    

rsync, který funguje správně, protože porovnává kontrolní součty

$ rsync -cavu A/ b
building file list ... done
1/2/x
1/2/3/y
1/2/4/z

sent 381 bytes  received 86 bytes  934.00 bytes/sec
total size is 57  speedup is 0.12

$ find A b -type f | xargs -I% sh -c "echo %; cat %;"
A/1/2/3/y
\___________from A
A/1/2/4/z
\___________from A
A/1/2/x
\___________from A
b/1/2/3/y
\___________from A
b/1/2/3/y0
\___________from b
b/1/2/4/z
\___________from A
b/1/2/4/z0
\___________from b
b/1/2/x
\___________from A
b/1/2/x0
\___________from b

Linux
  1. Linux – Jak synchronizovat dvě složky pomocí nástrojů příkazového řádku?

  2. Jak odstranit soubory se specifickou příponou v příkazovém řádku Linuxu

  3. Jak třídit soubory do složek podle typu souboru na bash (pomocí příkazu 'file')?

  1. Jak převést PDF do JPG pomocí příkazového řádku v Linuxu?

  2. Jak převedu dokument DjVu do PDF v Linuxu pouze pomocí nástrojů příkazového řádku?

  3. Jak mohu vytvořit soubor s určitou velikostí z příkazového řádku?

  1. Jak restartovat Linux pomocí příkazového řádku

  2. Jak nahradit soubor v jar příkazovým řádkem v linuxu?

  3. Synchronizujte dvě místní složky v bash