Список GUID типов разделов для всех дисков из командной строки?

[1125749]Я думаю, что лучше всего убедиться, что процесс B копирует только те файлы, которые были полностью переданы процессом A. Одним из способов сделать это было бы использование в процессе А комбинации [1126232]cp[1126233] и [1126234]mv[1126235], так как процесс [1126236]mv[1126237] использует системный вызов [1126238]rename[1126239] (при условии, что файлы находятся на одной и той же файловой системе), который является атомарным. Это означает, что с точки зрения процесса B, файлы появляются в полностью сформированном виде.

Одним из способов реализации этого является наличие в каталоге [1126240]частичной директории [1126241], которая игнорируется процессом B, в каталоге [1126242]/резервной директории [1126243]. Для процесса A вы можете сделать что-то вроде:

А для процесса B (используя [1126244]bash[1126245]):

Хотя программа, которую вы, вероятно, захотите изучить, как для процесса A, так и для процесса B, это [1126246]rsync[1126247]. [1126248]rsync[1126249] создает частичные файлы и атомически перемещается на место по умолчанию (хотя обычно частичные файлы являются скрытыми файлами, а не находятся в определенном каталоге). Rsync также позволяет избежать передачи файлов, которые ей не нужны, и имеет специальный дельта-алгоритм передачи только соответствующих частей файлов, которые необходимо обновить по сети ([1126250]rsync[1126251] должна быть установлена в обоих местах, хотя по умолчанию передачи все равно идут по [1126252]ssh[1126253]). Использование [1126254]rsync[1126255] для процесса A:[1297]Для процесса B:[1298]

2
05.06.2015, 03:53
2 ответа

Это было мое окончательное решение с использованиемblkid -p

function find_osds()
{
    local osds
    declare -a dev_list
    mapfile dev_list < <(lsblk -l -n -o NAME --exclude 1,7,11) # note -I not available in all versions of lsblk, use exclude instead
    for dev in "${dev_list[@]}"; do
        dev=/dev/$(trim "$dev")
        if blkid -p "$dev" | fgrep -q '4fbd7e29-9d25-41b8-afd0-062c0ceff05d'; then
            osds+=($dev)
        fi
    done
    echo "${osds[@]}"
}
2
27.01.2020, 22:54

lsblk - list block devices твой друг.

# lsblk -p -o NAME,PARTTYPE
NAME         PARTTYPE
/dev/vda     
├─/dev/vda1  c12a7328-f81f-11d2-ba4b-00a0c93ec93b
├─/dev/vda2  ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
...
2
27.01.2020, 22:54

Теги

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