LINUX.ORG.RU

История изменений

Исправление Twissel, (текущая версия) :

#!/bin/sh

#Setup/variables:

#Each snapshot name must be unique, timestamp is a good choice.
#You can also use Solaris date, but I don't know the correct syntax.
snapshot_string=DO_NOT_DELETE_remote_replication_
timestamp=$(/usr/bin/date '+%Y%m%d%H%M%S')
source_pool=data
destination_pool=data2
new_snap="$source_pool"@"$snapshot_string""$timestamp"
destination_host=s2.local.site
file="test.lock"
# Create first recursive snapshot of the whole pool.
create_fullsnapshot() {
  zfs snapshot -r "$new_snap"
  # Initial replication via SSH.
  zfs send -R "$new_snap" | ssh "$destination_host" zfs recv -Fdu "$destination_pool"
  touch $file
}

create_incremental_snapshot() {

	# Incremental sends:

	# Get old snapshot name.
	old_snap=$(zfs list -H -o name -t snapshot -r "$source_pool" | grep "$source_pool"@"$snapshot_string" | tail --lines=1)
	# Create new recursive snapshot of the whole pool.
	zfs snapshot -r "$new_snap"
	# Incremental replication via SSH.
	zfs send -R -I "$old_snap" "$new_snap" | ssh "$destination_host" zfs recv -Fdu "$destination_pool"

}

if [ -e ${file} ]; then
	create_incremental_snapshot
   else
      create_full_snapshot
fi      
# Delete older snaps on the local source (grep -v inverts the selection)
delete_from=$(zfs list -H -o name -t snapshot -r "$source_pool" | grep "$snapshot_string" | grep -v "$timestamp")
for snap in $delete_from; do
    zfs destroy "$snap"
done

При таком раскладе все работает, а если скрипт из ОП - нет.

Pinkbyte, ничего не подскажешь?

Исходная версия Twissel, :

говнокод вроде такого

#!/bin/sh

#Setup/variables:

#Each snapshot name must be unique, timestamp is a good choice.
#You can also use Solaris date, but I don't know the correct syntax.
snapshot_string=DO_NOT_DELETE_remote_replication_
timestamp=$(/usr/bin/date '+%Y%m%d%H%M%S')
source_pool=data
destination_pool=data2
new_snap="$source_pool"@"$snapshot_string""$timestamp"
destination_host=s2.pleskan.site
file="test.lock"
# Create first recursive snapshot of the whole pool.
create_fullsnapshot() {
  zfs snapshot -r "$new_snap"
  # Initial replication via SSH.
  zfs send -R "$new_snap" | ssh "$destination_host" zfs recv -Fdu "$destination_pool"
  touch $file
}

create_incremental_snapshot() {

	# Incremental sends:

	# Get old snapshot name.
	old_snap=$(zfs list -H -o name -t snapshot -r "$source_pool" | grep "$source_pool"@"$snapshot_string" | tail --lines=1)
	# Create new recursive snapshot of the whole pool.
	zfs snapshot -r "$new_snap"
	# Incremental replication via SSH.
	zfs send -R -I "$old_snap" "$new_snap" | ssh "$destination_host" zfs recv -Fdu "$destination_pool"

}

if [ -e ${file} ]; then
	create_incremental_snapshot
   else
      create_full_snapshot
fi      
# Delete older snaps on the local source (grep -v inverts the selection)
delete_from=$(zfs list -H -o name -t snapshot -r "$source_pool" | grep "$snapshot_string" | grep -v "$timestamp")
for snap in $delete_from; do
    zfs destroy "$snap"
done

При таком раскладе все работает, а если скрипт из ОП - нет.

Pinkbyte, ничего не подскажешь?