Чи є різниця між жорстким посиланням на cp -l чи ln?


15

Я реалізую схему резервного копіювання за допомогою rsync та жорстких посилань. Я знаю, що я можу використовувати link-dest з rsync для здійснення жорстких посилань, але я побачив згадку про використання "cp -l" перед тим, як "link-dest" був реалізований у rsync. Ще один метод жорсткого зв’язку, про який я знаю, - це "ln".

Тому моє запитання викликає цікавість: чи є різниця у створенні жорстких посилань за допомогою "cp -l" порівняно з використанням "ln"?


Посилання не відрізняються.
rici

Ви хочете сказати, що немає різниці? Їх можна було б взаємозамінно використовувати?
twan163

Я сам пройшов невеликий тест, але не побачив різниці між ними, з першого погляду.
twan163

cp: illegal option -- lВи впевнені, що у CP є l-варіант?
Том

Відповіді:


16

Результати обох повинні бути однаковими, оскільки створюється жорстке посилання на вихідний файл.

Різниця полягає в передбачуваному використанні, а отже, і в доступних для кожної команди параметрах. Наприклад, cpможна використовувати рекурсію, тоді як lnне можна:

cp -lr <src> <target>

створить жорсткі посилання <target>на всі файли в <src>. (він створює нові каталоги; не посилання). Результатом буде те, що структура дерева каталогів <target>буде виглядати ідентично тій, що знаходиться внизу <src>. Він буде відрізнятися від того, cp -r <src> <target>що за допомогою останнього буде скопійовано кожен файл та папку та дасть кожному нове, inodeтоді як перший просто використовує жорсткі посилання на файли і тому просто збільшує їх Linksкількість.

Якщо ви використовуєте для копіювання одного файлу, як у вашому прикладі, результати будуть однаковими.


якщо я правильно розумію, "cp -lr" створить жорсткі посилання для всіх файлів, але якщо в <target> відсутні каталоги, вони будуть створені як нові (тобто немає жорстких посилань на каталоги в <target>)?
twan163

Так, це правильно. Ви не можете створити жорсткі посилання на каталоги. Тому для збереження структури файлів / каталогів вони перетворюються на жорсткі посилання на файли всередині "реальних" каталогів.
garethTheRed

щодо поведінки для "cp -lr": жорсткі посилання на файли ... нові каталоги для каталогів. здається трохи дивним, але я думаю, що ця "дивна" поведінка є побічним ефектом обмежень (не може мати жорсткі посилання каталогів). ||| також FYI для довідки Ось деякі посилання на інформацію про жорсткі посилання, не дозволені для directoreis ref1 від askubuntu та ref2 від unix.stackexchange .
Тревор Бойд Сміт

2

посилання використовує найменші системні виклики, а потім ln та нарешті cp :

$ strace link f.txt g.txt | wc --lines
282

$ strace ln --symbolic f.txt g.txt | wc --lines
311

$ strace ln f.txt g.txt | wc --lines
334

$ strace cp --symbolic f.txt g.txt | wc --lines
394

$ strace cp --link f.txt g.txt | wc --lines
410
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.