Profruit banner

Умен звънец в openHAB

16 декември 2023

Телефонът е винаги с мен и сега, където и да се намирам получавам известие от openHAB, че някой е позвънил и чака пред вратата. А ако ме няма вкъщи става ясно часа и датата на последното позвъняване.

Tasmota Multipress

30 септември 2023

Идеята е Sonoff Touch T1 US 2 в салона, да управлява освен своето осветление и това в кухнята, а още вентилатора.

DIY 12V 1A WiFi Router UPS

22 април 2023

При поредно прекъсване на захранването вкъщи, батерията на нoтбука и двата UPS автоматично превключват на аварийно захранване и едновременно полита съобщение за конфуза

Zigbee2MQTT клониране

21 януари 2023

... как да клонираме съществуваща настройка на Zigbee2MQTT без да се налага последвало интервю на zigbee-устройствата.

LD2410 - бюджетен датчик присъствие в openHAB

11 февруари 2023

Цената на HLK-LD2410 зададе име на поредната тема в моя блог. С негова помощ се постига "народен" датчик присъствие в домашната автоматизация. . ...


За да се избегне копиране на файлове и каталози в различни части на файловата система в Linux, може да се прибегне до ползване на връзки (links), позволяващи откриване достъп към даден файл от разни места в системата. Linux поддържа гъвкави (прието да се наричат символни) и твърди връзки.

Кратки пътища

Обикновено миграцията към Linux от начинаещите става на база *buntu-дистро. По навик те формират своя десктоп с камара от икони подобна на църква и първото лутане е как да направят short-cut.



Добавяне на икона на приложение или системна икона на десктопа зависи от избора на система. Всяко дистро идва с DE (десктоп обкръжение/среда) и ръководител на файлове (file manager). Предпочитам работа в Gnome 2. Системните икони в тази среда могат да се викат или премахват по следния начин.Натискаме 'Alt + F2' и пишем 'gconf-editor', след което избираме 'run'. В появилия се прозорец преминаваме apps > nautilus > desktop и съответно добавяме, или премахваме нужна икона чрез чекбоксовете.
Gnome 2 конфигуратор

Gnome 2 е на изживяване и негов наследник е Mate. Пътят е подобен, но вместо Nautilus, ръководител на файлове е вече Caja, като повика става в началото с 'mateconf-editor'
Mate конфигуратор

Ако желаете, да добавете кратък път на приложение към иконите на вашия десктоп, то това позволява конктестното меню.
кратък път

Обективността обаче не може да нарече горните неща ShortCut, присъщи за Windows. Конкретно в *buntu това са десктоп стартери (desktop launcher), които са обект на desktop configuration file.
desktop launcher

Както казах, това са особености на обкръжението и характерна такава е в Lubuntu, която идва с LXDE и PCmanFM. В тази система конфигурацията на десктоп системна икона става чрез файл наречен Desktop Entry.

Например, системна икона на кошчето:
[Desktop Entry]
Type=Application
Icon=user-trash
Name=Trash
Name[bg]=Кошче
GenericName=Trash
GenericName[bg]=Кошче
Comment=open trash in PCManFM
Comment[bg]=Преглед на коша
Categories=FileManager;Utility;Core;GTK;
Exec=pcmanfm trash:///
StartupNotify=true
Terminal=false
MimeType=x-directory/normal;inode/directory;
Копирайте показаното съдържание в текстови файл и в момента на съхранение ще се появи икона с кошче на вашия Lubuntu десктоп. И още, това няма да работи според очакванията ви, защото е пряк път до каталога с затрити файлове и папки според хрумване на създателя на PCManFM. Влачене и пускане на файлове върху тази икона няма да доведе до тяхното изтриване и е възможно PCManFM да ви наругае с съобщение за грешка. Постигнато е един вид връзка в графичен вид, която ви дава чрез десен бутон на контекстното меню да преминете в trash:///. Пускането на ненужен файл и съответно му затриване прави аплет, което е една идея повече от горното.

Символни и твърди връзки в Linux

Когато вие опитате да отворите символна връзка, сочеща към конкретен файл или каталог, изпълняемата команда ще ви пренасочи към съответния обект (файл или каталог).
Обектът на символната връзка притежава собствени права за достъп и права за собственост, които не могат да бъдат определени въз основа на съдържащата се в символната връзка информация. Не е задължително символната връзка да се разполага на същия раздел на диска, където е и самия обект. Нещо повече, тя може да съществува дори при отсъствие на обекта.

За разлика от символната, твърдата връзка е възможна само за файлове, но не и каталози. На практика тя е начин за присвояване на име на конкретен физически файл.
Всеки файл притежава поне една символна връзка, благодарение на която се разбира че е такъв. Всяко допълнително име на файла (твърда връзка), трябва да се намира на същия раздел/том, където е и самия файл-обект на връзката. Начин за определяне, че даден файл се явява твърда връзка е да се види, че притежава един и същи номер на inode равен на същия у обекта. Важно е да се знае, че изменения на права за достъп, информация за дата и време или съдържание на произволна твърда връзка ще доведе до съответни изменения и в файл-обекта. Но, премахване на връзка няма да предизвика премахване на същинския файл - той ще съществува докато не бъде премахната и последната твърда връзка сочеща към него.

Нека приведем казаното на практика, за да внесем яснота.
Начин за създаване на връзка в Linux става чрез команда ln (съкратено от link). Каква е тази команда отговор получаваме така:
profruit@prodesktop:~$ whatis ln
ln (1) - make links between files

Повече за е нея чрез man ln или info ln.

За удoбство на упражнението се преместим в каталог Desktop и създадем файл test, каталог hard и каталог symbolic на моя десктоп в качество на примери.
profruit@prodesktop:~$ cd Desktop
profruit@prodesktop:~/Desktop$ > test
profruit@prodesktop:~/Desktop$ mkdir hard
profruit@prodesktop:~/Desktop$ mkdir symbolic

А сега в каталог hard създадем твърда връзка hardlink и съответно в каталог symbolic създадем сивмолна връзка symlink.
profruit@prodesktop:~/Desktop$ ln test hard/hardlink
profruit@prodesktop:~/Desktop$ ln -s ~/Desktop/test symbolic/symlink

Отлично. Имаме това:
създаване на връзки

или същото погледнато през командния процесор:
преглед на връзки - tree

Вниматeлен поглед в последните две команди се чете, че символна връзка се създава с помощта на опция -s. Преход в дадена папка (прието е визуализирани каталози, да се наричат папки) ми дава възможност, чрез намиращата се там връзка да отварям файл-обект test.

Интерес буди техните свойства и на помощ команда ls с опции -li (i - inode) и параметър съответния файл.

За test това:
profruit@prodesktop:~/Desktop$ ls -li test
995060 -rw-r--r-- 2 profruit profruit 0 2012-12-15 13:07 test

За hardlink това:
profruit@prodesktop:~/Desktop$ ls -li hard/hardlink
995060 -rw-r--r-- 2 profruit profruit 0 2012-12-15 13:07 hardlink

За symlink това:
profruit@prodesktop:~/Desktop$ ls -li symbolic/symlink
995099 lrwxrwxrwx 1 profruit profruit 27 2012-12-15 13:11 symlink -> /home/profruit/Desktop/test

Какво получихме до тук?
Ако влезем в папка symbolic и отворим symlink ще бъдем преведени в файл test. Достъпът към него ще бъде съобразен с неговите зададени права, а те разрешават четене и писане на притежателя, само четене от групата на притежателя и само четене от останалите членове на системата. Дефисът отпред говори, че е файл (-rw-r--r--). Самата символна връзка започва с l, което говори, че е такава. Правата й (lrwxrwxrwx) се отличават от тези на файл test. Това е важно да се схване и следва да знаете, че не можете да определите разрешен ли ви е достъп до test, докато не преминете чрез нея и не прегледате файла.

Какво е положението около hardlink-връзка?
Тя повтаря правата на test. Забележете, тя има същия номер inode 995060, докато на символната връзка е 995099. Ако влезем в папка hard и отворим hardlink в текстови редактор, а после запишем текст, същият ще се появи в файл test. Ако редактираме test, то промените ще се идентични с тези в hardlink.






до нови срещи   ^.^
15.12.2012 profruit 


0 Response to "Символни и твърди връзки в Linux"

Публикуване на коментар

Този блог е реинкарнация на първите ми опити за споделяне в нета. На времето започнах с къси разкази на преживяното. После се обезсмисли и превърнах блога си в системно радио. Пиша единствено неща, които карат душата ми да живее: openHAB, Ubuntu, Споделено и т.н. Това е моето системно радио, разбирате ли? Моята вълна и вие сте на нея сега.

Архив на блога