Изменение каталога с домашнего на корневой в camel-ftp

Я использую следующее в своей конфигурации Apache Camel:

<camel:route errorHandlerRef="loggingErrorHandler" id="ROUTE_ICL">

    <camel:from uri="file:{{camel.route.icl.from.file.path}}?filter=#fileFilterMAVRO&amp;initialDelay={{camel.route.from.file.initialDelay}}&amp;delay={{camel.route.from.file.delay}}&amp;useFixedDelay=true&amp;runLoggingLevel=TRACE&amp;startingDirectoryMustExist={{camel.route.from.file.startingDirectoryMustExist}}&amp;autoCreate={{camel.route.from.file.autoCreate}}&amp;maxMessagesPerPoll={{camel.route.from.file.maxMessagesPerPoll}}&amp;eagerMaxMessagesPerPoll=true&amp;delete=false&amp;readLock=idempotent&amp;readLockLoggingLevel=OFF&amp;readLockRemoveOnRollback=false&amp;readLockRemoveOnCommit=false&amp;idempotent=true&amp;idempotentKey=${file:onlyname}&amp;idempotentRepository=#iclMessageIdRepository&amp;recursive=false&amp;move={{camel.route.icl.complete.file.path}}&amp;moveFailed={{camel.route.icl.failed.file.path}}" />

    <camel:to uri="sftp://[email protected]:22/nas/tst2/inputfiles?password=Pass1234&amp;runLoggingLevel=TRACE"/>

</camel:route>

Теперь это работает. Он может sftp мой файл.

Проблема в том, что я хочу, чтобы мой файл находился по адресу: /nas/tst2/inputfiles. Но это происходит по адресу: /home/user1/nas/tst2/inputfiles

Теперь, как я могу сделать это для загрузки в /nas/tst2/inputfiles? /nas/ и /home/ находятся в ‹root›/.

Проблема заключается в изменении этого значения по умолчанию /home/.

Какой атрибут я могу использовать? Я не могу найти или понять, как это сделать в Camel DSL.


person Sukul Amrit    schedule 18.08.2017    source источник
comment
Благодаря @mcode это решается добавлением /../.. и использованием stepwise=true.   -  person Sukul Amrit    schedule 22.08.2017
comment
Начиная с версии camel v2.6, stepwise=true является поведением по умолчанию.   -  person YetAnotherBot    schedule 28.02.2019


Ответы (3)


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

../../../../../../../../this_is_the_root_folder/usr/....

В основном вы начинаете с каталога пользователя, а затем поднимаетесь вверх по дереву, пока не достигнете root. Вам нужно только убедиться, что вы добавили достаточно ../../, чтобы добраться до корня.

Это не самое лучшее решение, но оно простое и сработало для меня.

person mcode    schedule 22.08.2017
comment
Я понимаю вашу логику. Но это не работает для меня. - person Sukul Amrit; 22.08.2017
comment
Спасибо чувак ! Это решено, мне пришлось добавить stepwise=true. Большое тебе спасибо :) - person Sukul Amrit; 22.08.2017
comment
Вы могли бы сделать нам одолжение и отметить ответ как правильный ;-) - person mcode; 23.08.2017
comment
stackoverflow не позволяет мне выполнять какие-либо действия, даже щелкать стрелкой ВВЕРХ из-за меньшего количества очков репутации. я добавил о Ю в моем комментарии. - person Sukul Amrit; 23.08.2017

Вы не можете. Текущая реализация camel-ftp специально не позволяет использовать полные пути. Все пути указаны относительно домашнего каталога пользователя.

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

person Paul S    schedule 20.08.2017
comment
Можете ли вы помочь мне с подробной информацией о том, как это сделать? - person Sukul Amrit; 21.08.2017
comment
получить компонент camel-ftp с GitHub. Затем закомментируйте использование метода org.apache.camel.component.file.remote.FtpUtils. гарантировать относительный FTPDirectory. - person Paul S; 22.08.2017

Я не думаю, что лучшее решение — Camel DSL. Пользователь, которого вы используете для SFTP, имеет корень в домашнем каталоге.

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

person anpt    schedule 19.08.2017
comment
Это изменит только имя пользователя в каталоге /home/, например /home/user2/. Я искал, могу ли я получить какую-либо другую идею о том, как добраться до основного / «корневого» каталога в xml dsl. - person Sukul Amrit; 19.08.2017
comment
stackoverflow.com/questions/20797819/ - person anpt; 23.08.2017
comment
В верблюде, где мы собираемся это сделать? Там написано для линукса. - person Sukul Amrit; 24.08.2017
comment
Вы используете это в своей целевой системе, чтобы перенаправить домашний каталог для пользователя, тогда очень легко использовать sftp. Для большей безопасности используйте команду chroot. - person anpt; 24.08.2017