Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
E
etersoft-admin-essentials
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
etersoft
etersoft-admin-essentials
Commits
1db5a072
Commit
1db5a072
authored
Feb 05, 2015
by
Vitaly Lipatov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
gluster: semi rewrite grf
parent
cc92673a
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
97 additions
and
13 deletions
+97
-13
grf
gluster/grf
+97
-13
No files found.
gluster/grf
View file @
1db5a072
...
...
@@ -13,14 +13,35 @@ get_bricks()
gluster volume info
$GVOLUME
|
grep
Brick
"[0-9]"
|
sed
-e
"s|Brick[0-9]: ||g"
}
if
[
"
$1
"
=
"--remove"
]
;
then
set_host_path
()
{
host
=
"
$(
echo
"
$@
"
|
sed
-e
"s|:.*||g"
)
"
path
=
"
$(
echo
"
$@
"
|
sed
-e
"s|.*:||g"
)
"
echo
echo
"
$host
-
$path
"
}
if
[
"
$1
"
=
"--allremove"
]
||
[
"
$1
"
=
"--removeNO"
]
;
then
remove
=
"
$1
"
shift
fi
if
[
"
$1
"
=
"--restore"
]
;
then
restore
=
"
$1
"
shift
fi
WORKDIR
=
~/grf
mkdir
-p
$WORKDIR
sfile
=
"
$1
"
[
-n
"
$sfile
"
]
||
exit
md5sum
"
$sfile
"
stat
"
$sfile
"
# hack
[
-L
"
$sfile
"
]
&&
FLAGSYMLINK
=
1
case
"
$sfile
"
in
/var/ftp/pvt/
*
)
...
...
@@ -39,28 +60,91 @@ case "$sfile" in
fatal
"Unknown place
$sfile
"
esac
;
# hack
file
=
"
$(
echo
"
$sfile
"
|
sed
-e
"s|
$FTPROOT
||g"
)
"
for
i
in
$(
get_bricks
)
;
do
host
=
$(
echo
$i
|
sed
-e
"s|:.*||g"
)
path
=
$(
echo
$i
|
sed
-e
"s|.*:||g"
)
LISTBRICKS
=
"
$(
get_bricks
)
"
if
[
-z
"
$restore$remove
"
]
;
then
for
i
in
$LISTBRICKS
;
do
set_host_path
"
$i
"
echo
echo
$host
-
$path
# FIXME: если каталог не смонтировал, df покажет информацию о корне
ssh
$host
df
$path
#
ssh $host df $path
# если каталог, показываем также информацию о самом каталоге
[
-d
"
$sfile
"
]
&&
ssh
$host
ls
-ld
$path$file
# показываем информацию о файле или содержимом каталога
if
ssh
$host
ls
-l
$path$file
;
then
ssh
$host
md5sum
$path$file
echo
"
$file
"
|
grep
-q
rpm
&&
ssh
$host
epm checkpkg
$path$file
if
[
!
-L
"
$sfile
"
]
;
then
ssh
$host
md5sum
$path$file
echo
"
$file
"
|
grep
-q
rpm
&&
ssh
$host
epm checkpkg
$path$file
else
echo
"skip md5, it is link"
fi
fi
# удаляем локальные размещения
if
[
"
$remove
"
=
"--remove"
]
;
then
ssh
$host
rm
$path$file
fi
done
fi
if
[
"
$remove
"
=
"--allremove"
]
;
then
for
i
in
$LISTBRICKS
;
do
set_host_path
"
$i
"
# удаляем локальные размещения
# пустых файлов
ssh
$host
test
-s
"
$path$file
"
||
ssh
$host
rm
"
$path$file
"
done
fi
OLDFILE
=
if
[
"
$restore
"
=
"--restore"
]
;
then
COUNT
=
1
rm
-f
$WORKDIR
/
*
for
i
in
$LISTBRICKS
;
do
set_host_path
"
$i
"
FD
=
$(
ssh
$host
stat
-c
"%z"
$path$file
)
echo
$FD
if
[
-n
"
$FD
"
]
;
then
touch
-d
"
$FD
"
"
$WORKDIR
/
$host
-
$COUNT
"
if
[
-z
"
$OLDFILE
"
]
||
[
"
$OLDFILE
"
-nt
"
$WORKDIR
/
$host
-
$COUNT
"
]
;
then
if
ssh
$host
test
-s
"
$path$file
"
;
then
OLDFILE
=
"
$WORKDIR
/
$host
-
$COUNT
"
echo
"Select OLDFILE:
$OLDFILE
"
fi
fi
fi
# группируем одинаковые (md5sum файлы) при условии одинаковых дат
# из файлов с разными датами оставляем файлы старой даты
# из файлов разных размеров оставляем файлы большего размера
# желательно, чтобы файлов было два и больше
# после выбора правильных экземпляров надо произвести контроль данных
# исходный файл может иметь ошибку Ошибка ввода/вывода
# при этом 2 экземпляра лежащих файлов верны. помогает удаление одного из них
# ещё бывает, что файл — символическая ссылка, а где-то создан нулевой файл (права 1000)
# надо сверять каталоги, чтобы было одинаковое содержимое у пар?
COUNT
=
$((
$COUNT
+
1
))
done
ls
-l
$WORKDIR
echo
"OLD:
$OLDFILE
"
COUNT
=
1
for
i
in
$LISTBRICKS
;
do
set_host_path
"
$i
"
# Удаляем всё, кроме OLDFILE
if
!
[
"
$OLDFILE
"
=
"
$WORKDIR
/
$host
-
$COUNT
"
]
;
then
ssh
$host
rm
-fv
$path$file
fi
# нулевые с правами 10000 уберём по-другому
#if [ -n "$FLAGSYMLINK" ] ; then
# ssh $host test -L $path$file || ssh $host rm -v $path$file
#fi
COUNT
=
$((
$COUNT
+
1
))
done
fi
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment