Страница 2 из 2

Re: Синхронизация файлов и прав

СообщениеДобавлено: 17 ноя 2010, 16:05
solomin
Есть "некрасивый" способ сбросить права(получается и в том числе и расширенные атрибуты). делаем на сервере mv каталога куда-нибудь рядом, даем команду серверу перечитать права(напримео ncpcon rights view VOL:DIR), сервер права удаляет, а затем обратный mv и rsync. :twisted:

Re: Синхронизация файлов и прав

СообщениеДобавлено: 17 ноя 2010, 16:30
$erg
Это решение похоже на то, которое предполагает весь объем данных гонять с сервера на сервер, только в данном случае этот же объем гоняем в пределах одного сервера.
Некрасивые это решения.
Гораздо красивее выглядит, когда предлагается скриптом пробежать по всем каталогам и удалить все права, только нужно время, разобраться как его переделать под nss.

Re: Синхронизация файлов и прав

СообщениеДобавлено: 17 ноя 2010, 16:37
solomin
Не совсем так, перенос в соседний каталог(в прделах одного тома) и обратно займет доли секунды.
Пример:
mv /media/nss/VOL/dir /media/nss/VOL/temp
ncpcon rights view VOL:dir -- эта команда выдаст ошибку
mv /media/nss/VOL/temp/dir /media/nss/VOL/
- сбросит все права на каталог dir и подкаталоги

Re: Синхронизация файлов и прав

СообщениеДобавлено: 18 ноя 2010, 13:43
solomin
Если еще интересно, правда на больших объемах не проверял.

#!/bin/bash
dir_='/media/nss/VOL/some dir'
/usr/bin/find "${dir_}" -type d|while read dirs_;do
#echo $dirs_
/sbin/rights -f "${dirs_}" show|/usr/bin/grep ") ."|/usr/bin/awk -F") ." '{print $2}'|while read users_;do
#echo ${users_}
/sbin/rights -f "${dirs_}" delete "${users_}"
done
done

Re: Синхронизация файлов и прав

СообщениеДобавлено: 18 ноя 2010, 15:26
solomin
Есть более изящное и быстрое решение для удаления прав:
Согласно описанию(http://developer.novell.com/documentati ... title.html) функция removexattr удаляет только trustee:
"IMPORTANT:This function does not remove the netware.metadata extended attribute, but it does remove all the trustees and directory space restrictions associated with the file or directory."
Поэтому пишем файл (например rmxattr.c) со следующим содержимым:
//----------------------------------------------------
#include <sys/types.h>
#include <sys/xattr.h>

int main(int argc, char** argv)
{
const char* path=argv[1];
int rmresult;
rmresult = removexattr(path, "netware.metadata");
return rmresult;
}
//----------------------------------------------------

говорим нашему файлу 'gcc rmxattr.c' после чего получившийся файл переименовываем и складываем куда-нибудь, нпример в /usr/bin/.
далее удаление прав убдет происходить одной командой:
find /media/nss/VOL/dir -type d -exec /usr/bin/rmxattr {} \;

Поигрался, проверил, работает.

Re: Синхронизация файлов и прав

СообщениеДобавлено: 18 ноя 2010, 16:17
Dimerson
solomin писал(а):Есть более изящное и быстрое решение для удаления прав:
Согласно описанию(http://developer.novell.com/documentati ... title.html) функция removexattr удаляет только trustee:
"IMPORTANT:This function does not remove the netware.metadata extended attribute, but it does remove all the trustees and directory space restrictions associated with the file or directory."
Поэтому пишем файл (например rmxattr.c) со следующим содержимым:
//----------------------------------------------------
#include <sys/types.h>
#include <sys/xattr.h>

int main(int argc, char** argv)
{
const char* path=argv[1];
int rmresult;
rmresult = removexattr(path, "netware.metadata");
return rmresult;
}
//----------------------------------------------------

говорим нашему файлу 'gcc rmxattr.c' после чего получившийся файл переименовываем и складываем куда-нибудь, нпример в /usr/bin/.
далее удаление прав убдет происходить одной командой:
find /media/nss/VOL/dir -type d -exec /usr/bin/rmxattr {} \;

Поигрался, проверил, работает.


есть предложение пойти дальше и рекурсивно юзая opendir /readdir + removexattr сделать removexattr -rf /
(i mean аналог rm -rf /)
:) утиль будет полезная

могу выдать сырцы rm-rf.nlm (писанные именно под libc(opendir,readdir etc)).

Re: Синхронизация файлов и прав

СообщениеДобавлено: 18 ноя 2010, 16:38
solomin
можно попробовать :)

Re: Синхронизация файлов и прав

СообщениеДобавлено: 20 ноя 2010, 10:31
Dimerson
по мотивам rm-rf.nlm был сделан рекурсивынй удалятель trustees etc в 32 и 64 битных вариантах .

http://rapidshare.com/files/431965467/r ... 2and64.rar

Потестил у себя - воркает ... ничего грохнуть не могет тк там только opendir/closedir/readdir/stat/removexattr .
Как и ожидалось - через xattr не отображается trustee [PUBLIC] - он его не видит как будто. Как и бакапный софт через xattr.
На сильно большой файлопомойке не пробовал = тестил на ядре лемуха распакованном на томе. Пролетает мгновенно. У кого есть интерес - натравите на развесистую файлопомойку если есть возможность.

Re: Синхронизация файлов и прав

СообщениеДобавлено: 24 ноя 2010, 10:43
solomin
сырцы не покажешь? :roll:

Re: Синхронизация файлов и прав

СообщениеДобавлено: 29 ноя 2010, 11:50
$erg
Я тоже хотел бы взглянуть внутрь.
Поделись пожалуйста своим творчеством.

Re: Синхронизация файлов и прав

СообщениеДобавлено: 29 ноя 2010, 12:16
Dimerson
а потестить на большой файлопомойке ? (чуть не сказал как в анекдоте а поцеловать ?)

а если без шуток - потестите плиз как оно ? стек не переполняеццо при рекурсивной работе ?

Re: Синхронизация файлов и прав

СообщениеДобавлено: 19 янв 2012, 13:02
$erg
прошло больше года, кто-нибудь решил вопрос с синхронизацией данных со всеми правами?

Re: Синхронизация файлов и прав

СообщениеДобавлено: 19 янв 2012, 18:27
skoltogyan
А КАК ИМЕННО ВЫ ПО RSYNC переганяете данные ?
на NW запускаете rsync в режиме демона, на линухе rsync в режиме клиента (или наоборот) и синхроните ?
Если да, то при переносе таким образом с NW -> LINUX что у вас происходит с файлами и каталогами с русскими именами ?

Re: Синхронизация файлов и прав

СообщениеДобавлено: 20 янв 2012, 09:56
$erg
Нет, rsync сервер не настраивал, да я синхронизирую linux-nss с linux-nss.
просто синхронизация каталогов.
rsync -a -v -e ssh --progress --delete --exclude-from=/backup/rsync.excludes --backup --backup-dir=$snapshot_dir root@server:/media/nss/HOME/ /media/nss/WORK/HOME/ >/media/nss/WORK/Backup/sync`date \+\%Y_\%m_\%d`_HOME.log

Главное синхронизировать nss с nss, когда я поначалу backup-dir использовал ресурс на ext3, то русские имена в иероглифы превращались :), а когда перенес этот каталог на nss, то все стало нормально.
Ну и само собой беспарольный вход по ssh.

Re: Синхронизация файлов и прав

СообщениеДобавлено: 20 янв 2012, 11:28
skoltogyan
понятно. если с nw(NSS)--->linux(nss) по rsync переганять ( rsync в режиме демонов, а не файловомапленное), тогда русские на линуксе получались бредом у меня