sebastianfeldmann / phpbu

PHP Backup Utility - Creates and encrypts database and file backups, syncs your backups to other servers or cloud services and assists you monitor your backup process
https://phpbu.de
Other
1.29k stars 110 forks source link

Yandex disk cleanup #340

Open dnovikov32 opened 1 year ago

dnovikov32 commented 1 year ago

Good day! Cleanup does not work correctly when using synchronization on Yandex Disk.

In the arhitector/yandex library, which is used to work with Yandex.Disk, method Disk::getResource($path, $limit = 20, $offset = 0) has a default limit of 20. Because of this, an incomplete list of backups is returned.

The Yandex Disk client is used here, to get the full list, you can pass $limit = -1 $items = $this→disk→getResource($this→path→getPathThatIsNotChanging(), -1);

Example of my config:

"syncs": [
  {
    "type": "yandex-disk",
    "options": {
      "token": "adapter:environment:YANDEX_TOKEN",
      "path": "/backup/sitename/dump",
      "cleanup.type": "stepwise",
      "cleanup.daysToKeepDaily": 7,
      "cleanup.weeksToKeepWeekly": 4,
      "cleanup.monthToKeepMonthly": 12,
      "cleanup.yearsToKeepYearly": 3
    }
  }
]

My Yandex disk state (47 files):

mysql-20210224-0432.sql.bz2    1614130701     2021-02-24 01:38:21
mysql-20220101-0432.sql.bz2    1641001260     2022-01-01 01:41:00
mysql-20220528-0432.sql.bz2    1653701876     2022-05-28 01:37:56
mysql-20230404-0432.sql.bz2    1680572133     2023-04-04 01:35:33
mysql-20230501-0432.sql.bz2    1682905161     2023-05-01 01:39:21
mysql-20230502-0432.sql.bz2    1682991349     2023-05-02 01:35:49
mysql-20230503-0432.sql.bz2    1683077763     2023-05-03 01:36:03
mysql-20230504-0432.sql.bz2    1683164179     2023-05-04 01:36:19
mysql-20230505-0432.sql.bz2    1683250614     2023-05-05 01:36:54
mysql-20230506-0432.sql.bz2    1683337019     2023-05-06 01:36:59
mysql-20230507-0432.sql.bz2    1683423642     2023-05-07 01:40:42
mysql-20230508-0432.sql.bz2    1683509876     2023-05-08 01:37:56
mysql-20230509-0432.sql.bz2    1683596337     2023-05-09 01:38:57
mysql-20230510-0432.sql.bz2    1683682785     2023-05-10 01:39:45
mysql-20230511-0432.sql.bz2    1683768973     2023-05-11 01:36:13
mysql-20230512-0432.sql.bz2    1683855437     2023-05-12 01:37:17
mysql-20230513-0432.sql.bz2    1683941933     2023-05-13 01:38:53
mysql-20230514-0432.sql.bz2    1684028479     2023-05-14 01:41:19
mysql-20230515-0432.sql.bz2    1684114779     2023-05-15 01:39:39
mysql-20230516-0432.sql.bz2    1684200973     2023-05-16 01:36:13
mysql-20230517-0432.sql.bz2    1684287369     2023-05-17 01:36:09
mysql-20230518-0432.sql.bz2    1684373748     2023-05-18 01:35:48
mysql-20230519-0432.sql.bz2    1684460213     2023-05-19 01:36:53
mysql-20230520-0432.sql.bz2    1684546573     2023-05-20 01:36:13
mysql-20230521-0432.sql.bz2    1684633098     2023-05-21 01:38:18
mysql-20230522-0432.sql.bz2    1684719443     2023-05-22 01:37:23
mysql-20230523-0432.sql.bz2    1684805872     2023-05-23 01:37:52
mysql-20230524-0432.sql.bz2    1684892182     2023-05-24 01:36:22
mysql-20230525-0432.sql.bz2    1684978584     2023-05-25 01:36:24
mysql-20230526-0432.sql.bz2    1685064962     2023-05-26 01:36:02
mysql-20230527-0432.sql.bz2    1685151472     2023-05-27 01:37:52
mysql-20230528-0432.sql.bz2    1685238129     2023-05-28 01:42:09
mysql-20230529-0432.sql.bz2    1685324407     2023-05-29 01:40:07
mysql-20230530-0432.sql.bz2    1685410888     2023-05-30 01:41:28
mysql-20230531-0432.sql.bz2    1685496968     2023-05-31 01:36:08
mysql-20230601-0432.sql.bz2    1685583431     2023-06-01 01:37:11
mysql-20230602-0432.sql.bz2    1685669790     2023-06-02 01:36:30
mysql-20230603-0432.sql.bz2    1685756266     2023-06-03 01:37:46
mysql-20230603-1659.sql.bz2    1685800830     2023-06-03 14:00:30
mysql-20230604-0432.sql.bz2    1685842537     2023-06-04 01:35:37
mysql-20230605-0432.sql.bz2    1685928978     2023-06-05 01:36:18
mysql-20230606-0432.sql.bz2    1686015416     2023-06-06 01:36:56
mysql-20230607-0432.sql.bz2    1686101637     2023-06-07 01:33:57
mysql-20230608-0432.sql.bz2    1686188032     2023-06-08 01:33:52
mysql-20230609-0432.sql.bz2    1686274436     2023-06-09 01:33:56
mysql-20230610-0432.sql.bz2    1686360838     2023-06-10 01:33:58
mysql-20230611-0432.sql.bz2    1686447355     2023-06-11 01:35:55

List of files to delete (wrong result):

mysql-20230502-0432.sql.bz2
mysql-20230503-0432.sql.bz2
mysql-20230504-0432.sql.bz2
mysql-20230505-0432.sql.bz2
mysql-20230506-0432.sql.bz2
mysql-20230507-0432.sql.bz2
mysql-20230509-0432.sql.bz2
mysql-20230510-0432.sql.bz2
mysql-20230511-0432.sql.bz2
mysql-20230512-0432.sql.bz2
mysql-20230513-0432.sql.bz2
mysql-20230514-0432.sql.bz2
mysql-20230516-0432.sql.bz2

List of files to delete with limit -1 (correct result):

mysql-20230502-0432.sql.bz2
mysql-20230503-0432.sql.bz2
mysql-20230504-0432.sql.bz2
mysql-20230505-0432.sql.bz2
mysql-20230506-0432.sql.bz2
mysql-20230507-0432.sql.bz2
mysql-20230509-0432.sql.bz2
mysql-20230510-0432.sql.bz2
mysql-20230511-0432.sql.bz2
mysql-20230512-0432.sql.bz2
mysql-20230513-0432.sql.bz2
mysql-20230514-0432.sql.bz2
mysql-20230516-0432.sql.bz2
mysql-20230517-0432.sql.bz2
mysql-20230518-0432.sql.bz2
mysql-20230519-0432.sql.bz2
mysql-20230520-0432.sql.bz2
mysql-20230521-0432.sql.bz2
mysql-20230523-0432.sql.bz2
mysql-20230524-0432.sql.bz2
mysql-20230525-0432.sql.bz2
mysql-20230526-0432.sql.bz2
mysql-20230527-0432.sql.bz2
mysql-20230528-0432.sql.bz2
mysql-20230530-0432.sql.bz2
mysql-20230531-0432.sql.bz2
mysql-20230601-0432.sql.bz2
mysql-20230602-0432.sql.bz2
mysql-20230603-0432.sql.bz2
mysql-20230603-1659.sql.bz2
mysql-20230604-0432.sql.bz2

Thank you.