Символьная ссылка от одной рабочей станции до другого без монтирования

Существует простой способ использовать подвижный для управления версиями. Сначала установите его.

Для конфигурирования подвижный делают файл ~/.hgrc со следующим содержанием:

[ui]
username = Your name <your mail>
verbose = True

При использовании некоторых подвижных серверов можно добавить больше информации к этому файлу (чтение man hgrc).

После этого cd к каталогу с Вашими текстовыми файлами. Например:

> cd /tmp
> mkdir data && cd data
> cat > text_file.txt
Hello, this is a file.

Можно добавить также любое количество файлов. После того, как мы должны init подвижный:

> hg init

По умолчанию все еще нет никаких файлов, таким образом, мы должны, чтобы сказать подвижный, что мы хотим включать все:

> hg st
? text_file.txt
> hg add    
adding text_file.txt
> hg st
A text_file.txt

Теперь мы умеем обойтись простая фиксация:

> hg comm -m 'first run'
text_file.txt
committed changeset 0:87e90c949984

Теперь сделайте некоторые меры и посмотрите различие:

> cat >> text_file.txt 
Add one line.
> hg diff
diff -r 87e90c949984 text_file.txt
--- a/text_file.txt Mon Apr 01 12:52:14 2013 +0400
+++ b/text_file.txt Mon Apr 01 12:53:47 2013 +0400
@@ -1,1 +1,2 @@
 Hello, this is a file.
+Add one line.

Теперь сделайте другую фиксацию после часов hg log: Вы будете видеть обе фиксации.

Для возврата для первой фиксации просто делают так:

> hg upd -r 0:87e90c949984
resolving manifests
getting text_file.txt
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
> cat text_file.txt 
Hello, this is a file.

Вы видите: файл стар.

Теперь восстановление длится файл:

> hg upd                  
resolving manifests
getting text_file.txt
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
> cat text_file.txt 
Hello, this is a file.
Add one line.

Также можно сделать простой сценарий:

#!/bin/bash
while true; do
  hg commit -m "commit: $(date)"
  sleep 60
done

Выполните его, когда Вы начнете редактировать свой файл, и это будет проверять на изменения каждую минуту, если были изменения, подвижный сделает новую фиксацию. Кроме того, поскольку у меня есть упоминание в комментариях, можно использовать at или cron для автоматических фиксаций.

8
21.07.2014, 08:38
3 ответа

Вы не можете:

Символьная ссылка - это просто дополнительный индексный дескриптор (структура, указывающая на файл), и этот индексный дескриптор, помимо прочего, состоит из deviceId и указатель inode . deviceId фактически указывает на специальный файл устройства в каталоге / dev , а указатель inode указывает на блок на этом устройстве.

Ваше сетевое расположение 10.0.1.103 не имеет и не может иметь deviceId (его нет в / dev ), поэтому у вас не может быть символическая ссылка на сетевое расположение.

С другой стороны, смонтированный сетевой ресурс будет иметь deviceId , поэтому вы можете создать символическую ссылку на смонтированное местоположение.

14
27.01.2020, 20:08

У Windows есть специальный синтаксис \\MACHINE\DIRECTORY...\FILE имея в виду файл, расположенный по адресу \ДИРЕКТОРИЯ...\ФАЙЛ на машине с именем \\MACHINE по протоколу SMB. Он встроен в операционную систему и специализируется на одном сетевом протоколе.

Linux имеет гибкую файловую систему, основанную на понятии монтирования. Файловые системы прикрепляются к существующему каталогу, и администратор выбирает, как расположить иерархию каталогов. Для дополнительной информации читайте Что означает монтирование устройства в Linux?, Почему файловая система Linux спроектирована как единое дерево каталогов? и Какие точки монтирования существуют в типичной системе Linux?. Linux поддерживает множество сетевых файловых систем (т.е. файловых систем, которые позволяют одной машине получить доступ к файлам на другой машине), включая NFS, SMB, SSHFS и др.

NFS можно считать родной сетевой файловой системой Linux, как SMB - это Windows. Однако Linux не экспортирует свои файлы по умолчанию: необходимо установить NFS-сервер. NFS-сервер доступен во всех дистрибутивах Linux, но требует некоторой настройки (необходимо зарегистрировать экспортируемые каталоги в файле /etc/exports). Более того, NFS относится к более щадящим временам, когда взломщики в локальной сети не беспокоились, а для ее защиты требуется немного знаний о брандмауэрах, что выходит за рамки данного ответа. Чтобы сделать каталог /some/where с удаленной машины foo.example.com доступным по адресу /local/dir (который должен быть существующим каталогом), предполагая, что он экспортируется удаленной машиной, выполните следующую команду от имени root:

mount foo.example.com:/some/where /local/dir

Простой способ доступа к удаленным файлам без установки - через SSHFS. Все, что вам нужно, это установить SSH-сервер на удаленной машине и пакет sshfs на локальной машине. Вы также должны сгенерировать ключ (смотрите Как сделать так, чтобы логин без пароля работал ), хотя у вас не есть , если вы не возражаете против ввода пароля каждый раз. SSH дополнительно полезен для выполнения команд на удаленной машине. Чтобы сделать каталог /some/where с удаленной машины foo.example.com доступным по адресу /local/dir (который должен быть существующим каталогом) через SSHFS, запустите следующую команду (как ваш обычный пользователь):

sshfs foo.example.com:/some/where /local/dir

Linux может быть сервером или клиентом для протокола SMB (взаимодействующий с машинами Windows, или даже с другими машинами Linux, хотя он менее хорошо интегрирован, чем другие протоколы) с помощью Samba программного обеспечения.

Вы можете настроить automounter (например, autofs) так, чтобы доступ к определенным каталогам автоматически монтировался с какой-нибудь удаленной машины. Например, обычная конфигурация организует, что файловая система autofs монтируется в каталог /net, и доступ к /net/MACHINE/DIRECTORY приводит к тому, что удаленный каталог /DIRECTORY из /net/MACHINE устанавливается через NFS в этом месте (и после определенного периода бездействия он будет размонтирован). Разумеется, на удаленной машине должен быть настроен и разрешен доступ к NFS-серверу.

Можно настроить автоматический монтер с SSHFS. Смотрите Полностью бесшовная SSHFS под Linux с использованием Fuse and Autofs и Autofs и sshfs - идеальная пара для быстрого обучения; в двух словах:

  1. Установите autofs и sshfs.
  2. Добавьте следующую строку к /etc/auto.master:

    /mnt/sshfs /etc/auto.sshfs uid=1000,gid=1000,-timeout=30,--ghost
    

    Замените два вхождения 1000 на ваш идентификатор пользователя и идентификатор группы (запустите id -u и id -g, чтобы показать эти значения). Создайте каталог /mnt/sshfs.

  3. Создайте файл /etc/auto.sshfs, содержащий строки типа:

    machinename -fstype=fuse,rw,nodev,nonempty,noatime,allow_other,max_read=65536 :sshfs\#machinename.example.com\:
    

    где machinename.example.com - имя хоста (или IP-адрес) удаленной машины и machinename - имя, к которому вы хотите получить доступ локально, по пути /mnt/sshfs/machinename.

Autosshfs обеспечивает более удобную настройку autofs+sshfs.

Наконец, что касается символической части: вы можете создать символическую ссылку на несуществующий путь. Символическая связь является вторым аргументом, поэтому вам понадобится что-то вроде

ln -s /net/10.0.1.103/sharedFolder/symlinkFile.mov /link/to/local/file.mov

Вам нужно вручную или автоматически настроить /sharedFolder из 10.0.1.103 на /net/10.0.1.103/sharedFolder.

7
27.01.2020, 20:08

Для чего это стоит ...

Я работал над небольшим инструментом под названием lionfs , который основан на GhostFS Рафаэля С. Карвалью. . Цель состоит в том, чтобы разрешить символические ссылки, указывающие на URI . Он довольно неполный, содержит много проблем и в настоящее время поддерживает только HTTP. FUSE (Файловая система в пространстве пользователя) используется для обработки фона.

0
27.01.2020, 20:08

Теги

Похожие вопросы