Domanda

Qualcuno può aiutarmi con il comando Bash Codice non Shell, per ottenere due cartelle, questo quello che ho provato a fare, devo sincronizzare la directory D1 con D2 con questo codice, ma con questo codice sto ottenendo il primo file in D1 da copiare in D2 senza il resto del file e quale sarebbe il modo migliore per riscrivere questo codice nel file bash per sincronizzare D2 con D1,Devo risolvere il mio problema con il codice bash non con il comando shell, quindi per favore, aiutatemi con il mio codice e indirizzami a risolvere il mio problema

#! /Bin/Bash

di1=$(ls d1)


n=${#di1[@]}


for (( i = 1; i <$n+1 ; i++ )); do

      t=$(find d2 -name ${di1[$i]})

    if [[ $t = '' ]]; then

     cp d1/${di1[$i]} d2

    fi

 done

Nessuna soluzione corretta

Altri suggerimenti

rsync -avzh /tmp/src /tmp/dst/

Lasciami provare, dobbiamo chiarire esattamente cosa significa sincronizzazione:

Diciamo che hai due dir

d1
 L f1 10/25 11:40
 L f2 10/25 10:22
 L f4 10/10 08:01
d2
 L f1 10/25 10:11
 L f2 10/26 09:56
 L f3 10/24 11:37

dove d# è una directory e f# è un file (e# indica un numero di una cifra, se non lo hai ancora capito), mette i loro timestamp in mm/dd hh: mm.

Quindi vuoi avere F4 copiato su D2, F3 copiato su D1 (nessun sovrascritto fino a qui), quindi copiare (e sovrascrivere) D2/F1 con D1/F1 e D1/F2 con D2/F2.

allora dovresti finire con:

d1
 L f1 10/25 11:40
 L f2 10/26 09:56
 L f3 10/24 11:37
 L f4 10/10 08:01
d2
 L f1 10/25 11:40
 L f2 10/26 09:56
 L f3 10/24 11:37
 L f4 10/10 08:01

Bene, tutto ciò che ho fatto fino ad ora, è stato riformulare la tua domanda per essere sicuro che sia in un modo che posso rispondere, quindi se qualcuno lo legge ancora, la soluzione potrebbe essere semplice come:

Aggiorna i file esistenti in due direzione

cp -ur d1 d2
cp -ur d2 d1

questo è tutto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top