Как создать файловую систему & ldquo; view & rdquo; папки, которая исключает определенные файлы?

Я хочу иметь путь в файловой системе, который отображает все содержимое какого-либо другого пути, за исключением нескольких определенных файлов по моему выбору. Например, если следующее уже существует,

original-path ├── file1 ├── file2 ├── file3 ├── file4 ├── folder1 │   ├── file1 │   └── file2 └── folder2 ├── file1 └── file2

Я хочу уметь исключать /file1, /folder1/file1 и /folder2 из нового пути, который в противном случае указывает на одни и те же данные:

new-path ├── file2 ├── file3 ├── file4 └── folder1     └── file2

Как я могу это сделать? Какой-то тип привязки, файловая система FUSE или умная схема ссылок?

7
задан 24 May 2011 в 19:44

24 ответа

rofs-filter, файловая система FUSE, полученная из файловой системы только для чтения, может исключать файлы с использованием регулярных выражений:

$ cat rofs-filtered.rc ^/file1$ ^/folder1/file1$ ^/folder2$ $ rofs-filtered -c /home/ak/sandbox/rofs-filtered.rc /home/ak/sandbox/original-path /home/ak/sandbox/new-path $ tree {original,new}-path original-path ├── file1 ├── file2 ├── file3 ├── file4 ├── folder1 │   ├── file1 │   └── file2 └── folder2 ├── file1 └── file2 new-path ├── file2 ├── file3 ├── file4 └── folder1 └── file2

rofs-filter не доступен в репозиториях Ubuntu, но я начал a rofs-filter .

2
ответ дан 25 July 2018 в 21:51

rofs-filter, файловая система FUSE, полученная из файловой системы только для чтения, может исключать файлы с использованием регулярных выражений:

$ cat rofs-filtered.rc ^/file1$ ^/folder1/file1$ ^/folder2$ $ rofs-filtered -c /home/ak/sandbox/rofs-filtered.rc /home/ak/sandbox/original-path /home/ak/sandbox/new-path $ tree {original,new}-path original-path ├── file1 ├── file2 ├── file3 ├── file4 ├── folder1 │   ├── file1 │   └── file2 └── folder2 ├── file1 └── file2 new-path ├── file2 ├── file3 ├── file4 └── folder1 └── file2

rofs-filter не доступен в репозиториях Ubuntu, но я начал a rofs-filter .

2
ответ дан 26 July 2018 в 17:15

rofs-filter, файловая система FUSE, полученная из файловой системы только для чтения, может исключать файлы с использованием регулярных выражений:

$ cat rofs-filtered.rc ^/file1$ ^/folder1/file1$ ^/folder2$ $ rofs-filtered -c /home/ak/sandbox/rofs-filtered.rc /home/ak/sandbox/original-path /home/ak/sandbox/new-path $ tree {original,new}-path original-path ├── file1 ├── file2 ├── file3 ├── file4 ├── folder1 │   ├── file1 │   └── file2 └── folder2 ├── file1 └── file2 new-path ├── file2 ├── file3 ├── file4 └── folder1 └── file2

rofs-filter не доступен в репозиториях Ubuntu, но я начал a rofs-filter .

2
ответ дан 2 August 2018 в 03:26

rofs-filter, файловая система FUSE, полученная из файловой системы только для чтения, может исключать файлы с использованием регулярных выражений:

$ cat rofs-filtered.rc ^/file1$ ^/folder1/file1$ ^/folder2$ $ rofs-filtered -c /home/ak/sandbox/rofs-filtered.rc /home/ak/sandbox/original-path /home/ak/sandbox/new-path $ tree {original,new}-path original-path ├── file1 ├── file2 ├── file3 ├── file4 ├── folder1 │   ├── file1 │   └── file2 └── folder2 ├── file1 └── file2 new-path ├── file2 ├── file3 ├── file4 └── folder1 └── file2

rofs-filter не доступен в репозиториях Ubuntu, но я начал a rofs-filter .

2
ответ дан 4 August 2018 в 19:24

rofs-filter, файловая система FUSE, полученная из файловой системы только для чтения, может исключать файлы с использованием регулярных выражений:

$ cat rofs-filtered.rc ^/file1$ ^/folder1/file1$ ^/folder2$ $ rofs-filtered -c /home/ak/sandbox/rofs-filtered.rc /home/ak/sandbox/original-path /home/ak/sandbox/new-path $ tree {original,new}-path original-path ├── file1 ├── file2 ├── file3 ├── file4 ├── folder1 │   ├── file1 │   └── file2 └── folder2 ├── file1 └── file2 new-path ├── file2 ├── file3 ├── file4 └── folder1 └── file2

rofs-filter не доступен в репозиториях Ubuntu, но я начал a rofs-filter .

2
ответ дан 6 August 2018 в 03:35

rofs-filter , файловая система FUSE, полученная из файловой системы только для чтения , может исключать файлы с использованием регулярных выражений:

  $ cat  rofs-filter.rc ^ / file1 $ ^ / folder1 / file1 $ ^ / folder2 $ $ rofs-filter -c /home/ak/sandbox/rofs-filtered.rc / home / ak / sandbox / original-path / home /  ak / sandbox / new-path $ tree {original, new} -path исходный путь ├── file1 ├── file2 ├── file3 ├── file4 ├── folder1 │ ├── file1 │ └── file2 └  ── folder2 ├── file1 └── file2 new-path ├── file2 ├── file3 ├── file4 └── folder1 └── file2  

rofs-filter isn ' t в репозиториях Ubuntu, но я начал запрос , чтобы он добавил .

2
ответ дан 7 August 2018 в 21:24

rofs-filter , файловая система FUSE, полученная из файловой системы только для чтения , может исключать файлы с использованием регулярных выражений:

  $ cat  rofs-filter.rc ^ / file1 $ ^ / folder1 / file1 $ ^ / folder2 $ $ rofs-filter -c /home/ak/sandbox/rofs-filtered.rc / home / ak / sandbox / original-path / home /  ak / sandbox / new-path $ tree {original, new} -path исходный путь ├── file1 ├── file2 ├── file3 ├── file4 ├── folder1 │ ├── file1 │ └── file2 └  ── folder2 ├── file1 └── file2 new-path ├── file2 ├── file3 ├── file4 └── folder1 └── file2  

rofs-filter isn ' t в репозиториях Ubuntu, но я начал запрос , чтобы он добавил .

2
ответ дан 10 August 2018 в 09:42

rofs-filter , файловая система FUSE, полученная из файловой системы только для чтения , может исключать файлы с использованием регулярных выражений:

  $ cat  rofs-filter.rc ^ / file1 $ ^ / folder1 / file1 $ ^ / folder2 $ $ rofs-filter -c /home/ak/sandbox/rofs-filtered.rc / home / ak / sandbox / original-path / home /  ak / sandbox / new-path $ tree {original, new} -path исходный путь ├── file1 ├── file2 ├── file3 ├── file4 ├── folder1 │ ├── file1 │ └── file2 └  ── folder2 ├── file1 └── file2 new-path ├── file2 ├── file3 ├── file4 └── folder1 └── file2  

rofs-filter isn ' t в репозиториях Ubuntu, но я начал запрос , чтобы он добавил .

2
ответ дан 13 August 2018 в 15:54

Я думаю, что вы уже на правильной странице. Вы упомянули о двух вещах, которые я бы предложил.

FUSE, по-видимому, довольно просто застрять. У меня был аналогичный вопрос к этому некоторое время назад, и один из ответов упоминал FUSE. Я нашел более простой вариант (который я объясню через секунду), но если это нежелательно, FUSE, возможно, стоит исследовать.

Моя проблема заключалась в том, что у меня есть входящий каталог, где клиенты сбрасывают все виды дерьмо. Мне нужен был способ разрешить их сортировку в глубокие каталоги (например, /work/client-name/project/document.ext), но все же хватит на верхнем уровне, чтобы увидеть, что было новым. Я написал небольшой скрипт bash, который поддерживал «недавний» каталог, содержащий символические ссылки на недавний контент.

Нечто такое простое, как это может сработать для вас. Просто сохраняйте цепочку на аргументах -not -name или фильтруйте положительно, если у вас есть что-то, что вы можете найти ...

#!/bin/bash rm new-path/* # clean up old symlinks find original-path -type d -maxdepth 1 -not -name folder2\ -exec ln -s -t new-path/ {} +

Это только первый уровень, но вы можете развернуть его до:

Поиск каталогов, которые вы хотели бы зеркалировать. Создавать новые (реальные) каталоги в new-path. Зацикливать новые каталоги и искать старые версии для файлов, которые вы хотите, создавая символические ссылки. Как и оригинальная находка с некоторым дополнением к путям. Первоначальная инструкция по очистке также должна быть rm -rf new-path/*, потому что они настоящие. Будьте осторожны с этим.
2
ответ дан 25 July 2018 в 21:51

Я нашел это:

Cmdfs - виртуальная файловая система FUSE, которая применяет команду произвольного фильтра к выбранным файлам в дереве исходного каталога для создания целевых файлов.

Вот статья об этом: http://www.linux-magazine.com/Online/Features/Cmdfs

И источник на github: http: / /www.linux-magazine.com/Online/Features/Cmdfs

1
ответ дан 25 July 2018 в 21:51

Я думаю, что вы уже на правильной странице. Вы упомянули о двух вещах, которые я бы предложил.

FUSE, по-видимому, довольно просто застрять. У меня был аналогичный вопрос к этому некоторое время назад, и один из ответов упоминал FUSE. Я нашел более простой вариант (который я объясню через секунду), но если это нежелательно, FUSE, возможно, стоит исследовать.

Моя проблема заключалась в том, что у меня есть входящий каталог, где клиенты сбрасывают все виды дерьмо. Мне нужен был способ разрешить их сортировку в глубокие каталоги (например, /work/client-name/project/document.ext), но все же хватит на верхнем уровне, чтобы увидеть, что было новым. Я написал небольшой скрипт bash, который поддерживал «недавний» каталог, содержащий символические ссылки на недавний контент.

Нечто такое простое, как это может сработать для вас. Просто сохраняйте цепочку на аргументах -not -name или фильтруйте положительно, если у вас есть что-то, что вы можете найти ...

#!/bin/bash rm new-path/* # clean up old symlinks find original-path -type d -maxdepth 1 -not -name folder2\ -exec ln -s -t new-path/ {} +

Это только первый уровень, но вы можете развернуть его до:

Поиск каталогов, которые вы хотели бы зеркалировать. Создавать новые (реальные) каталоги в new-path. Зацикливать новые каталоги и искать старые версии для файлов, которые вы хотите, создавая символические ссылки. Как и оригинальная находка с некоторым дополнением к путям. Первоначальная инструкция по очистке также должна быть rm -rf new-path/*, потому что они настоящие. Будьте осторожны с этим.
2
ответ дан 26 July 2018 в 17:15

Я нашел это:

Cmdfs - виртуальная файловая система FUSE, которая применяет команду произвольного фильтра к выбранным файлам в дереве исходного каталога для создания целевых файлов.

Вот статья об этом: http://www.linux-magazine.com/Online/Features/Cmdfs

И источник на github: http: / /www.linux-magazine.com/Online/Features/Cmdfs

1
ответ дан 26 July 2018 в 17:15

Я думаю, что вы уже на правильной странице. Вы упомянули о двух вещах, которые я бы предложил.

FUSE, по-видимому, довольно просто застрять. У меня был аналогичный вопрос к этому некоторое время назад, и один из ответов упоминал FUSE. Я нашел более простой вариант (который я объясню через секунду), но если это нежелательно, FUSE, возможно, стоит исследовать.

Моя проблема заключалась в том, что у меня есть входящий каталог, где клиенты сбрасывают все виды дерьмо. Мне нужен был способ разрешить их сортировку в глубокие каталоги (например, /work/client-name/project/document.ext), но все же хватит на верхнем уровне, чтобы увидеть, что было новым. Я написал небольшой скрипт bash, который поддерживал «недавний» каталог, содержащий символические ссылки на недавний контент.

Нечто такое простое, как это может сработать для вас. Просто сохраняйте цепочку на аргументах -not -name или фильтруйте положительно, если у вас есть что-то, что вы можете найти ...

#!/bin/bash rm new-path/* # clean up old symlinks find original-path -type d -maxdepth 1 -not -name folder2\ -exec ln -s -t new-path/ {} +

Это только первый уровень, но вы можете развернуть его до:

Поиск каталогов, которые вы хотели бы зеркалировать. Создавать новые (реальные) каталоги в new-path. Зацикливать новые каталоги и искать старые версии для файлов, которые вы хотите, создавая символические ссылки. Как и оригинальная находка с некоторым дополнением к путям. Первоначальная инструкция по очистке также должна быть rm -rf new-path/*, потому что они настоящие. Будьте осторожны с этим.
2
ответ дан 2 August 2018 в 03:26

Я нашел это:

Cmdfs - виртуальная файловая система FUSE, которая применяет команду произвольного фильтра к выбранным файлам в дереве исходного каталога для создания целевых файлов.

Вот статья об этом: http://www.linux-magazine.com/Online/Features/Cmdfs

И источник на github: http: / /www.linux-magazine.com/Online/Features/Cmdfs

1
ответ дан 2 August 2018 в 03:26

Я думаю, что вы уже на правильной странице. Вы упомянули о двух вещах, которые я бы предложил.

FUSE, по-видимому, довольно просто застрять. У меня был аналогичный вопрос к этому некоторое время назад, и один из ответов упоминал FUSE. Я нашел более простой вариант (который я объясню через секунду), но если это нежелательно, FUSE, возможно, стоит исследовать.

Моя проблема заключалась в том, что у меня есть входящий каталог, где клиенты сбрасывают все виды дерьмо. Мне нужен был способ разрешить их сортировку в глубокие каталоги (например, /work/client-name/project/document.ext), но все же хватит на верхнем уровне, чтобы увидеть, что было новым. Я написал небольшой скрипт bash, который поддерживал «недавний» каталог, содержащий символические ссылки на недавний контент.

Нечто такое простое, как это может сработать для вас. Просто сохраняйте цепочку на аргументах -not -name или фильтруйте положительно, если у вас есть что-то, что вы можете найти ...

#!/bin/bash rm new-path/* # clean up old symlinks find original-path -type d -maxdepth 1 -not -name folder2\ -exec ln -s -t new-path/ {} +

Это только первый уровень, но вы можете развернуть его до:

Поиск каталогов, которые вы хотели бы зеркалировать. Создавать новые (реальные) каталоги в new-path. Зацикливать новые каталоги и искать старые версии для файлов, которые вы хотите, создавая символические ссылки. Как и оригинальная находка с некоторым дополнением к путям. Первоначальная инструкция по очистке также должна быть rm -rf new-path/*, потому что они настоящие. Будьте осторожны с этим.
2
ответ дан 4 August 2018 в 19:24

Я нашел это:

Cmdfs - виртуальная файловая система FUSE, которая применяет команду произвольного фильтра к выбранным файлам в дереве исходного каталога для создания целевых файлов.

Вот статья об этом: http://www.linux-magazine.com/Online/Features/Cmdfs

И источник на github: http: / /www.linux-magazine.com/Online/Features/Cmdfs

1
ответ дан 4 August 2018 в 19:24

Я думаю, что вы уже на правильной странице. Вы упомянули о двух вещах, которые я бы предложил.

FUSE, по-видимому, довольно просто застрять. У меня был аналогичный вопрос к этому некоторое время назад, и один из ответов упоминал FUSE. Я нашел более простой вариант (который я объясню через секунду), но если это нежелательно, FUSE, возможно, стоит исследовать.

Моя проблема заключалась в том, что у меня есть входящий каталог, где клиенты сбрасывают все виды дерьмо. Мне нужен был способ разрешить их сортировку в глубокие каталоги (например, /work/client-name/project/document.ext), но все же хватит на верхнем уровне, чтобы увидеть, что было новым. Я написал небольшой скрипт bash, который поддерживал «недавний» каталог, содержащий символические ссылки на недавний контент.

Нечто такое простое, как это может сработать для вас. Просто сохраняйте цепочку на аргументах -not -name или фильтруйте положительно, если у вас есть что-то, что вы можете найти ...

#!/bin/bash rm new-path/* # clean up old symlinks find original-path -type d -maxdepth 1 -not -name folder2\ -exec ln -s -t new-path/ {} +

Это только первый уровень, но вы можете развернуть его до:

Поиск каталогов, которые вы хотели бы зеркалировать. Создавать новые (реальные) каталоги в new-path. Зацикливать новые каталоги и искать старые версии для файлов, которые вы хотите, создавая символические ссылки. Как и оригинальная находка с некоторым дополнением к путям. Первоначальная инструкция по очистке также должна быть rm -rf new-path/*, потому что они настоящие. Будьте осторожны с этим.
2
ответ дан 6 August 2018 в 03:35

Я нашел это:

Cmdfs - виртуальная файловая система FUSE, которая применяет команду произвольного фильтра к выбранным файлам в дереве исходного каталога для создания целевых файлов.

Вот статья об этом: http://www.linux-magazine.com/Online/Features/Cmdfs

И источник на github: http: / /www.linux-magazine.com/Online/Features/Cmdfs

1
ответ дан 6 August 2018 в 03:35

Я думаю, что вы уже на правильной странице. Вы упомянули о двух вещах, которые я бы предложил.

FUSE, по-видимому, довольно просто застрять. У меня был аналогичный вопрос к этому некоторое время назад, и один из ответов упоминал FUSE. Я нашел более простой вариант (который я объясню через секунду), но если это нежелательно, FUSE, возможно, стоит исследовать.

Моя проблема заключалась в том, что у меня есть входящий каталог, где клиенты сбрасывают все виды дерьмо. Мне нужно было разрешить сортировать их в глубокие каталоги (например, /work/client-name/project/document.ext ), но все же у вас хватит верхнего уровня, чтобы увидеть, что было новым. Я написал небольшой скрипт bash, который поддерживал «недавний» каталог, содержащий символические ссылки на недавний контент.

Что-то простое, как это может сработать для вас. Просто держите цепочку на аргументах -not -name или фильтруйте положительно, если у вас есть что-то, что вы можете найти ...

  #! / Bin / bash rm new-  path / * # очистить старые символические ссылки find original-path -type d -maxdepth 1 -not -name folder2 \ -exec ln -s -t new-path / {} +  

Это это только первый уровень, но вы можете расширить его до:

  • Искать каталоги, которые вы хотели бы зеркалировать
  • Создать новые (реальные) каталоги в new-path [ ! d3]
  • Прокрутите новые каталоги и выполните поиск старых версий для файлов, которые вы хотите, создавая символические ссылки. Как и исходная находка с некоторым дополнением к путям.
  • Изначальная инструкция очистки также должна быть rm -rf new-path / * , потому что они настоящие dirs , Будьте осторожны с этим.
2
ответ дан 7 August 2018 в 21:24

Я нашел это:

Cmdfs - виртуальная файловая система FUSE, которая применяет команду произвольного фильтра к выбранным файлам в дереве исходного каталога для создания файлов назначения.

Вот статья об этом: http://www.linux-magazine.com/Online/Features/Cmdfs

И источник на github: https://github.com/mikeswain/cmdfs

1
ответ дан 7 August 2018 в 21:24

Я нашел это:

Cmdfs - виртуальная файловая система FUSE, которая применяет команду произвольного фильтра к выбранным файлам в дереве исходного каталога для создания файлов назначения.

Вот статья об этом: http://www.linux-magazine.com/Online/Features/Cmdfs

И источник на github: https://github.com/mikeswain/cmdfs

1
ответ дан 10 August 2018 в 09:42

Я думаю, что вы уже на правильной странице. Вы упомянули о двух вещах, которые я бы предложил.

FUSE, по-видимому, довольно просто застрять. У меня был аналогичный вопрос к этому некоторое время назад, и один из ответов упоминал FUSE. Я нашел более простой вариант (который я объясню через секунду), но если это нежелательно, FUSE, возможно, стоит исследовать.

Моя проблема заключалась в том, что у меня есть входящий каталог, где клиенты сбрасывают все виды дерьмо. Мне нужно было разрешить сортировать их в глубокие каталоги (например, /work/client-name/project/document.ext ), но все же у вас хватит верхнего уровня, чтобы увидеть, что было новым. Я написал небольшой скрипт bash, который поддерживал «недавний» каталог, содержащий символические ссылки на недавний контент.

Что-то простое, как это может сработать для вас. Просто держите цепочку на аргументах -not -name или фильтруйте положительно, если у вас есть что-то, что вы можете найти ...

  #! / Bin / bash rm new-  path / * # очистить старые символические ссылки find original-path -type d -maxdepth 1 -not -name folder2 \ -exec ln -s -t new-path / {} +  

Это это только первый уровень, но вы можете расширить его до:

  • Искать каталоги, которые вы хотели бы зеркалировать
  • Создать новые (реальные) каталоги в new-path [ ! d3]
  • Прокрутите новые каталоги и выполните поиск старых версий для файлов, которые вы хотите, создавая символические ссылки. Как и исходная находка с некоторым дополнением к путям.
  • Изначальная инструкция очистки также должна быть rm -rf new-path / * , потому что они настоящие dirs , Будьте осторожны с этим.
2
ответ дан 10 August 2018 в 09:42

Я нашел это:

Cmdfs - виртуальная файловая система FUSE, которая применяет команду произвольного фильтра к выбранным файлам в дереве исходного каталога для создания файлов назначения.

Вот статья об этом: http://www.linux-magazine.com/Online/Features/Cmdfs

И источник на github: https://github.com/mikeswain/cmdfs

1
ответ дан 13 August 2018 в 15:54

Я думаю, что вы уже на правильной странице. Вы упомянули о двух вещах, которые я бы предложил.

FUSE, по-видимому, довольно просто застрять. У меня был аналогичный вопрос к этому некоторое время назад, и один из ответов упоминал FUSE. Я нашел более простой вариант (который я объясню через секунду), но если это нежелательно, FUSE, возможно, стоит исследовать.

Моя проблема заключалась в том, что у меня есть входящий каталог, где клиенты сбрасывают все виды дерьмо. Мне нужно было разрешить сортировать их в глубокие каталоги (например, /work/client-name/project/document.ext ), но все же у вас хватит верхнего уровня, чтобы увидеть, что было новым. Я написал небольшой скрипт bash, который поддерживал «недавний» каталог, содержащий символические ссылки на недавний контент.

Что-то простое, как это может сработать для вас. Просто держите цепочку на аргументах -not -name или фильтруйте положительно, если у вас есть что-то, что вы можете найти ...

  #! / Bin / bash rm new-  path / * # очистить старые символические ссылки find original-path -type d -maxdepth 1 -not -name folder2 \ -exec ln -s -t new-path / {} +  

Это это только первый уровень, но вы можете расширить его до:

  • Искать каталоги, которые вы хотели бы зеркалировать
  • Создать новые (реальные) каталоги в new-path [ ! d3]
  • Прокрутите новые каталоги и выполните поиск старых версий для файлов, которые вы хотите, создавая символические ссылки. Как и исходная находка с некоторым дополнением к путям.
  • Изначальная инструкция очистки также должна быть rm -rf new-path / * , потому что они настоящие dirs , Будьте осторожны с этим.
2
ответ дан 13 August 2018 в 15:54

Другие вопросы по тегам:

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