Puncte:0

Rsync : păstrează data după copiere

drapel cn

Am o problemă cu atributele fișierelor, deoarece am schimbat sistemul de fișiere al companiei mele de la un vechi ubuntu 12 la un Synology NAS.

Am montat inițial share-uri NFS pe vechiul meu sistem de fișiere, apoi cu cp am copiat totul, totul era ok Dar am uitat să păstrez atributele, și am pierdut mai ales data, datele au devenit data copierii, și nu data reală.

Am găsit comanda rsync rsync -vrt --size-only /src /dest Dar unele fișiere au fost modificate de la copiere, iar comanda le suprascrie...

De exemplu, am încercat să creez un fișier pe vechiul sistem de fișiere, copiendu-l pe noua synology, apoi modificând fișierul pe synology. Când folosesc rsync, fișierul este șters și înlocuit cu o versiune veche.

Caut o comandă, pentru a copia marcaje temporale pentru fișiere numai atunci când fișierul are exact aceeași dimensiune (nu au fost modificate)

Nu contează dacă durează mult

Editați | × : Am încercat soluția propusă cu un director de testare, fără eroare, dar fără modificări:

old_base=/home/samba/shares/projects/test      
new_base=/mnt/NAS  
cp $bază_veche $bază_nouă -rv
        `/home/samba/shares/projects/test/1201.txt' -> `/mnt/NAS/test/1201.txt'
        `/home/samba/shares/projects/test/test.txt' -> `/mnt/NAS/test/test.txt'
        `/home/samba/shares/projects/test/1200.txt' -> `/mnt/NAS/test/1200.txt'
        `/home/samba/shares/projects/test/1202/1202.txt' -> `/mnt/NAS/test/1202/1202.txt'

Acum noua mea bază este aceeași cu cea veche, dar nicio marcaj de timp ca realitatea Modific un fișier, adăugând conținut pentru a simula un fișier editat, deoarece am copiat totul Apoi aplic soluția ta:

    root@xx:/mnt/NAS/test# cd $old_base; găsi . -tip f | xargs ls -s | sortează -k 2,2 >/tmp/old
    root@xx:/home/samba/shares/projects/test# cd $new_base; găsi . -tip f | xargs ls -s | sortare -k 2,2 >/tmp/new
    root@xx:/mnt/NAS# comm -12 /tmp/old /tmp/new | în timp ce se citește dimensiunea numelui fișierului; atingeți ${new_base}/${filename} -r ${old_base}/${filename}; Terminat
    comm: fișierul 2 nu este în ordine sortată
    comm: fișierul 1 nu este în ordinea sortată

Nu am nicio eroare, dar nicio modificare (Nu sunt sigur ce vrei să spui prin ${filename}, dar am încercat să-l înlocuiesc și cu ${new_base}/*

Editare: 22/07

Nu am niciun rezultat când folosesc

comm -12 --nocheck-order /tmp/old /tmp/new
drapel cn
comm nu funcționează, deoarece caută fișierele care urmează să fie editate de primul câmp. *Este posibil* să puteți utiliza doar indicatorul --nocheck-order pentru a comunica.Sau vedeți verbiajul suplimentar în răspunsul meu.
Puncte:0
drapel cn

Prezentarea modului în care aș proceda: Listați cele două ierarhii într-un fișier cu dimensiune. Sortați și comparați fișierele de dimensiune cu „comm -12” pentru a oferi o listă de nume de fișiere care au exact aceeași dimensiune. Apoi puteți fie să generați o listă de marcaje de timp și să comparați, fie pur și simplu să introduceți lista respectivă într-o comandă „touch -r” pentru a duplica marcajele de timp. Vă rugăm să nu tăiați și lipiți orbește aceste comenzi -- asigurați-vă că înțelegeți ce încearcă ele să facă.

Dacă nu aveți un număr mare de fișiere, acest lucru nu ar trebui să dureze atât de mult.

Câteva comenzi simple (netestate) care ar trebui să ajute:

old_base = directorul de bază al ierarhiei cu fișiere vechi, marcajele temporale dorite

new_base = directorul de bază al ierarhiei cu fișiere noi, marcaje temporale necorespunzătoare

cd $bază_veche; găsi . -tip f | xargs ls -s | în timp ce se citește dimensiunea numelui fișierului; face eco „${filename} ${size}”; terminat | sort >/tmp/old_list

cd $new_base; găsi . -tip f | xargs ls -s | în timp ce se citește dimensiunea numelui fișierului; face eco „${filename} ${size}”; terminat | sort >/tmp/new_list

Încearcă doar să faci comm -12 /tmp/listă_veche /tmp/listă_nouă și privind la ieșire. Dacă nu numele fișierelor necesită modificarea marcajelor de timp, trebuie să ne dăm seama de ce nu.

comm -12 /tmp/listă_veche /tmp/listă_nouă | în timp ce se citește dimensiunea numelui fișierului; atingeți ${new_base}/${filename} -r ${old_base}/${filename}; Terminat

Mmmax avatar
drapel cn
Nu înțeleg cum, pentru că am milioane de fișiere, 6TB Ce este new_base? Cota de sinologie nfs?
drapel cn
Îmi voi edita postarea pentru a oferi mai mult context.
Mmmax avatar
drapel cn
Mi-am editat postarea cu rezultatul încercării mele
drapel cn
Foarte bine să faci mai întâi un caz de testare, Mmmax.
Mmmax avatar
drapel cn
Am adăugat -nocheck-order la comanda comm, acum nu am nicio eroare, nicio retur, dar nicio modificare în folderul meu de testare
drapel cn
@Mmmax.uită-te la postarea mea (editată). încercați doar „comm -12 /tmp/old_list /tmp/new_list” și vedeți dacă obțineți ceva.
Mmmax avatar
drapel cn
Niciun rezultat cu această comandă (postarea inițială editată)
drapel cn
@Mmmax Vă rugăm să încercați să vedeți ce înseamnă sugestiile mele și ce încearcă să facă. Cele două liste ies corect? Comm raportează vreo eroare? Ai pus o problemă interesantă și aș vrea să te ajut, dar trebuie să-mi dai mai multe cu care să lucrez pentru a te ajuta.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.