regenerate_test.go 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. package test
  2. import (
  3. "fmt"
  4. "github.com/aliyun/aliyun-oss-go-sdk/oss"
  5. "strings"
  6. "testing"
  7. )
  8. // 删除出了 callback 文件之外的所有文件
  9. func TestDeleteExceptCallback(t *testing.T) {
  10. // Define OSS configuration
  11. endpoint := "http://pji-bucket1.oss.icvdc.com"
  12. accessKeyID := "n8glvFGS25MrLY7j"
  13. accessKeySecret := "xZ2Fozoarpfw0z28FUhtg8cu0yDc5d"
  14. bucketName := "pji-bucket1"
  15. // Create an OSS client
  16. client, err := oss.New(endpoint, accessKeyID, accessKeySecret, oss.UseCname(true))
  17. if err != nil {
  18. fmt.Printf("Failed to create OSS client: %v\n", err)
  19. return
  20. }
  21. // Get the bucket
  22. bucket, err := client.Bucket(bucketName)
  23. if err != nil {
  24. fmt.Printf("Failed to get bucket: %v\n", err)
  25. return
  26. }
  27. // Define an array of directories (prefixes) to scan
  28. //directories := []string{
  29. // "pjibot_delivery/pjibot-P1YVPS1M22CM00020/data_parse/",
  30. // "pjibot_delivery/pjibot-P1YYPS1M227M00107/data_parse/",
  31. //}
  32. directories := []string{
  33. "pjibot_patrol/pjibot-P1YVXJ1M231M00022/data_parse",
  34. "pjibot_patrol/pjibot-P1YVXJ1M231M00023/data_parse",
  35. }
  36. for _, dir := range directories {
  37. // List objects in the directory
  38. marker := ""
  39. for {
  40. lsRes, err := bucket.ListObjects(oss.Prefix(dir), oss.Marker(marker))
  41. if err != nil {
  42. fmt.Printf("Failed to list objects in directory %s: %v\n", dir, err)
  43. break
  44. }
  45. for _, object := range lsRes.Objects {
  46. objectKey := object.Key
  47. // Process files not containing "callback"
  48. if !strings.Contains(objectKey, "callback") {
  49. err := bucket.DeleteObject(objectKey)
  50. if err != nil {
  51. fmt.Printf("Failed to delete object %s: %v\n", objectKey, err)
  52. } else {
  53. fmt.Printf("Deleted object: %s\n", objectKey)
  54. }
  55. continue
  56. }
  57. // Rename files containing "callback_done" to "callback"
  58. if strings.Contains(objectKey, "callback_done") {
  59. newKey := strings.Replace(objectKey, "callback_done", "callback", 1)
  60. err, _ = bucket.CopyObject(objectKey, newKey)
  61. if err != nil {
  62. fmt.Printf("Failed to copy object %s to %s: %v\n", objectKey, newKey, err)
  63. err = bucket.DeleteObject(objectKey)
  64. } else {
  65. err = bucket.DeleteObject(objectKey)
  66. if err != nil {
  67. fmt.Printf("Failed to delete original object %s after renaming: %v\n", objectKey, err)
  68. } else {
  69. fmt.Printf("Renamed object: %s to %s\n", objectKey, newKey)
  70. }
  71. }
  72. }
  73. }
  74. // Exit the loop if all objects are processed
  75. if !lsRes.IsTruncated {
  76. break
  77. }
  78. marker = lsRes.NextMarker
  79. }
  80. }
  81. }