tmpfs, symlink

vasek
Нужно конкретнее описывать задачу.
Да, верно. В этом я не силен.

vasek
!!! НО, если файл открыт и в него идет запись, его в выводе не будет
Но разве при создании файла сразу не указывается дата его изменения?
В любом случае, файл появляется в выводе. Помониторил stat файла - при добавлении новой строки время модификации меняется.
Попробовал создать ссылку с ключем --force, чтобы проверить, продолжает ли программа писать в файл - не продолжает.
b338219
Но разве при создании файла сразу не указывается дата его изменения?
У этого файла еще нет inode, проще - этого файла в файловой системе еще нет.
Файл фактически появится только после того, как будет сохранен, но не обязательно закрыт.
b338219
В любом случае, файл появляется в выводе.
Значит файл был сохранен, но не обязательно закрыт.
Писал же - чтобы убедится, проведи несколько простых экспериментов - открой два терминала, в одном создай файл - nano ~/TEST/1.txt, введи несколько символов, но не сохраняй. В другом терминале набери stat ~/TEST/1.txt и find ~/TEST -type f -mmin -5. Убедись в пустом выводе. Сохрани файл и не закрывая снова пробуй эти команды, увидишь, что файл в выводе появился. НО должен уложится в 5 мин или увеличивай время.
UPD.... Вот опять все толком не объяснил - непонятно, как обстоят дела с сохранением файлов, закрываются ли они после сохранения или нет. Это в том смысле, что как ты будешь перемещать сохраненные, но не закрытые файлы. ... PS ... в смысле, что хоть файл и сохранен, но запись в него продолжается
Вообщем задача простая, экспериментируй.
vasek
У этого файла еще нет inode, проще - этого файла в файловой системе еще нет.
Файл фактически появится только после того, как будет сохранен, но не обязательно закрыт.
Да, но ведь это еще не файл, в случае nano это просто текст в буффере. Ведь при создании файла, например командой touch файл сразу создается...
Но это все игра слов / зависимость реализации... Ну или я не прав в терминологии.

vasek
в смысле, что хоть файл и сохранен, но запись в него продолжается
Да, именно это меня и смущает.

vasek
Вообщем задача простая, экспериментируй.
b338219
Попробовал создать ссылку с ключем --force, чтобы проверить, продолжает ли программа писать в файл - не продолжает.

Я так думаю, что на этом можно остановится, если дозапись не происходит, значит такой вариант не сработает.
b338219
если дозапись не происходит, значит такой вариант не сработает.
Наоборот, если файл сохранен и запись в него больше не происходит, то его можно смело перемещать в другое место.
vasek
Наоборот, если файл сохранен и запись в него больше не происходит, то его можно смело перемещать в другое место.
Видимо не так описал.
Программа создает файл, продолжает дозаписывать его. Не закрывает.
Я пытаюсь создать ссылку с ключем --force (оригинальный фал заменяется ссылкой на файл в /tmp).
Программа дозапись не продолжает.
Я понимаю, что это не правильный вариант, но для проверки логики должен работать.
b338219, в принципе, то что ты хочешь, сделать можно, но я не встречал таких существующих прог. )))
а можно это сделать потому что почти так же работает encfs... создается виртуальная папка и вся работа в этой папке перехватывается и делай что угодно, "прога жертва" об этом не узнает и так и будет работать в неведении...
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874
Ну что ж, тогда остановлюсь на варианте с симлинками в разделе tmpfs на все старые файлы и директории.
Всем спасибо.
b338219, посмотри этот старый топик, может пригодится.
EDIT 1 - при hardlink оба файла с разными именами имеют общий inode
vasek, спасибо, я посмотрел. Жесткие ссылки не вариант, так как их нельзя создавать между устройствами. Если я правильно понимаю.
mount --bind тоже не подходит для моей цели.
В любом случае, сделал, как и думал в начале.
for f in ~/path/to/dir/*; do ln -s "$f" /tmp/dirtmp/; done
Запускаю программу с /tmp/dirtmp, таким образом все новые файлы создаются на tmpfs разделе, а симлинки указывают на предыдущие файлы.
b338219
Жесткие ссылки не вариант, так как их нельзя создавать между устройствами. Если я правильно понимаю.
На всякий случай (может в будущем пригодится) даю ссылку на хорошую, в моем понимании, статью по отличию hard-link и soft-link
 
Зарегистрироваться или войдите чтобы оставить сообщение.